【发布时间】:2021-06-15 11:59:03
【问题描述】:
我正在尝试通过循环从 AWS S3 获取多个图像但我无法从该循环返回多个图像数据
获取单张图片
const getImage = async (imgKay) => {
let tempImage = null;
if (imgKay !== "default-header.jpg") {
tempImage = await s3.getObject({Key: imgKay, Bucket: process.env.AWS_BUCKET_NAME}).promise();
}
return tempImage;
}
通过循环获取多个对象
const loopAllImageAndAddToList = (blockContent) => {
console.log("Data fetching please wait");
let imgList = new Array();
blockContent.forEach(async (bc, bcIdx, arrNum) => {
console.log("index: " + bcIdx + " Array Length: ", arrNum.length);
if (bc.blockElement.name === "imgBlockContent") {
const tempImage = await getImage(bc.blockElement.imgUrl);
imgList.push({ key: bc.blockElement.imgUrl, binaryImg: tempImage.Body });
}
});
return Promise.all(imgList);
}
快速获取请求
router.get('/preview/:id', (req, res, next) => {
const sql = `SELECT id, title, bg_img, bg_color, link_color, layout, content, sibling FROM nodejs_story WHERE id=?`;
conn.query(sql, [req.params.id], async (err, result, fields) => {
if (err) throw err;
try {
const blockContent = await JSON.parse(result[0].content);
const res = await loopAllImageAndAddToList(blockContent)
console.log("res: ", res);
res.render('template/template-preview', { docs: result[0] });
} catch (readFileErr) {
console.log("Read file error: ".red, readFileErr);
}
});
});
【问题讨论】:
-
为什么不使用 loopAllImageAndAddToList() 的返回值?
-
我试过这个仍然得到空白数组``` const res = await loopAllImageAndAddToList(blockContent) console.log("res: ", res); ```
标签: node.js amazon-web-services express amazon-s3 es6-promise