首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从节点js上载文件到aws s3

从节点js上载文件到aws s3
EN

Stack Overflow用户
提问于 2020-10-01 14:15:49
回答 2查看 45关注 0票数 1

我正在使用aws上传用户输入的图像,然后从亚马逊获取图像链接,我将在mongoDB中存储该链接。在这种情况下,当我运行.upload()时,它是异步的。

代码语言:javascript
复制
const imgSRC = [];


for (let img of image) {
console.log(img);
const params = {
  Bucket: process.env.AWS_BUCKET,
  Key: `${img.originalname}_${userID}`,
  Body: img.buffer,
};
s3.upload(params,  (error, data) => {
  if (error) {
    console.log(error);
    res.status(500).json({ msg: "server error" });
  }
   imgSRC.push(data.Location);
  console.log(imgSRC);
});

}

代码语言:javascript
复制
const newPost = new Post({
userID: userID,
contentID: contentID,
posts: [
  {
    caption: caption,
    data: imgSRC,
  },
],

});const post =等待newPost.save();

在mongodb .save运行情况下,还没有来自亚马逊网络服务的imgLinks。我怎么才能修好这些东西。

我已经试过异步了,但不起作用

EN

回答 2

Stack Overflow用户

发布于 2020-10-01 14:26:21

您需要以这种方式使用Promise.all()

代码语言:javascript
复制
const uploadImage = (obj) => {
  return new Promise((resolve, reject) => {
    const params = {
      Bucket: process.env.AWS_BUCKET,
      Key: obj.key,
      Body: obj.body,
    }
    s3.upload(params, (error, data) => {
      if (error) {
        console.log(error);
        return reject(error);
      }
      return data;
    });
  })
}

const mainFunction = async () => {
  const promises = [];
  for (let img of image) {
    const options = {
      key: `${img.originalname}_${userID}`,
      body: img.buffer
    };
    promises.push(uploadImage(options));
  }
  const result = await Promise.all(promises);
  const imgSRC = result.map((r) => { return r.Location });
  return imgSRC;
}
票数 0
EN

Stack Overflow用户

发布于 2020-10-01 14:27:37

如果在s3.upload方法上使用await,则应该删除此方法的回调。

代码语言:javascript
复制
try {
  const data = await s3.upload(params);
  imgSRC.push(data.Location);
  console.log(imgSRC);
} catch(e) {
  console.log(error);
  res.status(500).json({ msg: "server error" });
}

如果它起作用了,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64150011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档