如何承诺我的 S3 getObjectUrl 函数?
How do I promisify my S3 getObjectUrl function?
我很难做出承诺,我将如何在下面承诺我的功能?
我想做一些类似 s3VerificationBucket.getSignedUrl().promise() 的事情来获得每个操作的承诺,然后使用 Promise.all(...) 等待所有操作的结果有回应吗???
router.get(`/api/verification/load`, auth, async (req, res) => {
try {
const user = await User.findOne({ GETS A USER })
let urlArray = []
const keyArray = [user.idKey, user.selfieKey]
for (const key in keyArray) {
s3VerificationBucket.getSignedUrl(
"getObject",
{
Bucket: "app-verification",
Key: key,
Expires: 30,
},
(err, url) => urlArray.push(url)
)
}
if (urlArray.length === 0) {
console.log("URL ARRAY EMPTY") -> RETURNS "URL ARRAY EMPTY"
}
const idUrl = urlArray[0]
const selfieUrl = urlArray[1]
res.send({ user, idUrl, selfieUrl })
} catch (err) {
res.status(500).send()
}
})
像这样:
const urlArray = await Promise.all(keyArray.map(key =>
s3VerificationBucket.getSignedUrlPromise(
"getObject",
{
Bucket: "app-verification",
Key: key,
Expires: 30,
}
)
));
有关 getSignedUrlPromise
的文档,请参阅 here
我很难做出承诺,我将如何在下面承诺我的功能?
我想做一些类似 s3VerificationBucket.getSignedUrl().promise() 的事情来获得每个操作的承诺,然后使用 Promise.all(...) 等待所有操作的结果有回应吗???
router.get(`/api/verification/load`, auth, async (req, res) => {
try {
const user = await User.findOne({ GETS A USER })
let urlArray = []
const keyArray = [user.idKey, user.selfieKey]
for (const key in keyArray) {
s3VerificationBucket.getSignedUrl(
"getObject",
{
Bucket: "app-verification",
Key: key,
Expires: 30,
},
(err, url) => urlArray.push(url)
)
}
if (urlArray.length === 0) {
console.log("URL ARRAY EMPTY") -> RETURNS "URL ARRAY EMPTY"
}
const idUrl = urlArray[0]
const selfieUrl = urlArray[1]
res.send({ user, idUrl, selfieUrl })
} catch (err) {
res.status(500).send()
}
})
像这样:
const urlArray = await Promise.all(keyArray.map(key =>
s3VerificationBucket.getSignedUrlPromise(
"getObject",
{
Bucket: "app-verification",
Key: key,
Expires: 30,
}
)
));
有关 getSignedUrlPromise