javascript - 循环中的 Javascript 无法获取 S3 预签名的网址
问题描述
我无法让我的代码在下面工作。
我正在查询用户对象,然后对于返回的每个用户对象,我需要从其 idKey 和 selfieKey 属性中获取 2 个预签名 url,然后将用户对象及其各自的预签名 url 发回。
当尝试在 for in 循环中执行此操作时,我在记录数组 keyArray 时得到 [undefined, undefined] ,因此代码在到达 S3 方法之前在此处失败。
任何帮助将不胜感激。谢谢
router.post("/api/verification/check", auth, async (req, res) => {
try {
const users = await User.find({ // Gets 1 or more User objects })
let usersWithUrls = [] // add results for each loop iteration
for (const user in users) {
const keyArray = [user.idKey, user.selfieKey]
console.log(keyArray)
const urlArray = await Promise.all(
keyArray.map((key) =>
S3.getSignedUrlPromise("getObject", {
Bucket: "app-bucket",
Key: key,
Expires: 30,
})
)
)
const idUrl = urlArray[0]
const selfieUrl = urlArray[1]
usersWithUrls.push({ user, idUrl, selfieUrl })
}
if (users) {
return res.send(usersWithUrls)
}
} catch (err) {
res.status(400).send()
}
}
)
解决方案
尝试将您的 for in 更改为 for of。
for (const user of users) {
for in 循环为您提供索引。
for of 循环给你对象
推荐阅读
- javascript - 如何在 nuxt.js 中启用 http2 协议
- javascript - JavaScript 模式 getElementsByClassName
- javascript - 使用 req.data 在 restify 中将值从中间件传递到控制器不起作用?
- angular - 初始化前无法访问“RoutePageModule”
- c - 通过管道(C)写入外部程序
- javascript - PhpStorm:在 ctp 文件中编写 PHP、HTML 和 JS
- javascript - Adonisjs:如何在清晰的模型创建中捕获异常?
- javascript - 对代理使用 `with` 语句是一种不好的做法吗?
- python-3.x - 将字典列表拆分为多列
- blender - 没有可见的关键帧,但对象仍在移动