как вызвать переменную в массиве - PullRequest
0 голосов
/ 03 мая 2018

Я новичок в Node.js и облачных функциях Google. Я пытаюсь создать миниатюру, как только изображение загружено в хранилище Firebase, и оно прекрасно работает. Однако есть небольшая проблема, которую я не мог обойти

 const thumbarray = [];
 exports.generateThumbnail = functions.storage.object('{pushId}/ProductImages').onFinalize((object, context) => {

// [START eventAttributes]
const fileBucket = object.bucket; // The Storage bucket that contains the file.
const filePath = object.name; // File path in the bucket.
const contentType = object.contentType; // File content type.
const resourceState = object.resourceState; // The resourceState is 'exists' or 'not_exists' (for file/folder deletions).
const metageneration = object.metageneration; // Number of times metadata has been generated. New objects have a value of 1.


const fileDir = path.dirname(filePath);
const fileName0 = path.basename(filePath);


var fileName = fileName0.split("*")[1];
var thumbname = fileName0.split("*")[2];  // thumbnail 1 or 2 or 3
thumbarray.push(thumbname);



const thumbFilePath = path.normalize(path.join(fileDir, `${THUMB_PREFIX}${fileName}`));
const tempLocalFile = path.join(os.tmpdir(), filePath);
const tempLocalDir = path.dirname(tempLocalFile);
const tempLocalThumbFile = path.join(os.tmpdir(), thumbFilePath);

console.log("the file name is ", fileName);


console.log("this is the object ", object);
// [END eventAttributes]

// [START stopConditions]
// Exit if this is triggered on a file that is not an image.
if (!contentType.startsWith('image/')) {
    console.log('This is not an image.');
    return null;
}


// Exit if the image is already a thumbnail.
if (fileName.startsWith(THUMB_PREFIX)) {
    console.log('Already a Thumbnail.');
    return null;
}

// Download file from bucket.
const bucket = gcs.bucket(fileBucket);
const file = bucket.file(filePath);
const thumbFile = bucket.file(thumbFilePath);




const metadata = {
    contentType: contentType,
};
// Create the temp directory where the storage file will be downloaded.
return mkdirp(tempLocalDir).then(() => {
    // Download file from bucket.
    return file.download({
        destination: tempLocalFile
    });
}).then(() => {
    console.log('The file has been downloaded to', tempLocalFile);
    // Generate a thumbnail using ImageMagick.
    return spawn('convert', [tempLocalFile, '-thumbnail', `${THUMB_MAX_WIDTH}x${THUMB_MAX_HEIGHT}>`, tempLocalThumbFile], {
        capture: ['stdout', 'stderr']
    });
}).then(() => {
    console.log('Thumbnail created at', tempLocalThumbFile);
    // Uploading the Thumbnail.
    return bucket.upload(tempLocalThumbFile, {
        destination: thumbFilePath,
        metadata: metadata
    });
}).then(() => {
    console.log('Thumbnail uploaded to Storage at', thumbFilePath);
    // Once the image has been uploaded delete the local files to free up disk space.
    fs.unlinkSync(tempLocalFile);
    fs.unlinkSync(tempLocalThumbFile);
    // Get the Signed URLs for the thumbnail and original image.
    const config = {
        action: 'read',
        expires: '03-01-2500',
    };
    return Promise.all([
        thumbFile.getSignedUrl(config),
        file.getSignedUrl(config),
    ]);
}).then((results) => {
    console.log('Got Signed URLs.');
    // var thumbname = fileName0.split("*")[2];

    const thumbname = thumbarray[0];
    console.log('the thumbname from array is ...', thumbname);
    const thumbResult = results[0];
    const originalResult = results[1];
    const thumbFileUrl = thumbResult[0];
    const fileUrl = originalResult[0];
    // Add the URLs to the Database
    return admin.database().ref('Listings/' + fileName).update({
        path: fileUrl,
        thumbname: thumbFileUrl // I want thumbname to be thumbname 1 or 2 or 3 
    });
}).then(() => console.log('Thumbnail URLs saved to database.'));
});

Я определил имя большого пальца ранее в коде

 var thumbname = fileName0.split("*")[2];  // thumbnail 1 or 2 or 3

Я хочу позвонить позже в конце кода здесь

  thumbname: thumbFileUrl // I want thumbname to be thumbname 1 or 2 or 3 

но он не получает правильную переменную (т.е. эскиз 1), вместо этого он читает имя большого пальца как строку, не являющуюся переменной. Как я могу получить переменную для вызова здесь? Любая помощь будет оценена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...