Node.JS Загрузка нескольких изображений в AWS S3 Async - PullRequest
0 голосов
/ 07 ноября 2018

Я создал 2 функции, одну для загрузки одного изображения и другую для загрузки нескольких изображений.

Загрузка одного изображения работает нормально для меня, в то время как при загрузке нескольких изображений изображения загружаются на S3, а затем я пытаюсь выдвинуть в массив каждый путь к изображению, но когда я возвращаю массив, он пуст

module.exports = {
async uploadOneFile(image) {
    const params = {
        Key: moment().format('YMMDDHHmmss') + '-' + image.upload.name,
        Bucket: config.get("AwsConfig.bucketName"),
        Body: image.upload.data,
        ContentType: image.upload.mimetype,
        ACL: 'public-read-write'
    };

    await s3.putObject(params).promise();
    return baseURL + params.Key;
},
uploadMultipleFiles(images) {
    const imagesPath = [];

    images.upload.map(async (image) => {
        const params = {
            Key: moment().format('YMMDDHHmmss') + '-' + image.name,
            Bucket: config.get("AwsConfig.bucketName"),
            Body: image.data,
            ContentType: image.mimetype,
            ACL: 'public-read-write'
        };

        await s3.putObject(params).promise();
        imagesPath.push(baseURL + params.Key);
    });

    return imagesPath;
}};

Я вызываю функцию так:

const result = await uploadMultipleFiles(req.files);
console.log(result);

И в выводе консоли я получаю []

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 07 ноября 2018

Может быть, попытаться вернуть строку на карте и присвоить возвращаемое значение карты массиву imagesPath?

Вот так:

uploadMultipleFiles(images) {
    const imagesPath = [];

    imagesPath = images.upload.map(async (image) => {
        const params = {
            Key: moment().format('YMMDDHHmmss') + '-' + image.name,
            Bucket: config.get("AwsConfig.bucketName"),
            Body: image.data,
            ContentType: image.mimetype,
            ACL: 'public-read-write'
        };

        await s3.putObject(params).promise();
        return Promise.resolve(baseURL + params.Key);
    });

    return imagesPath;
}
...