【发布时间】:2022-01-25 06:25:05
【问题描述】:
这是我使用 NodeJS 的第一个项目,我正在尝试获取用户所属的所有组中的所有帖子。因此,我试图在调用 res.send 方法之前将所有数据放入数组中。但是,数组最后是空的(请原谅我使用法语的表命名)。
router.get('/getUserPostes/:userId', async (req, res) => {
let userId = req.params.userId;
let endResult = []
await db.query('select groupeId from groupemembers where userId = ?', userId, async function(err, result){
if (err){
console.log(err.message)
res.send(null)
}
else {
await result.map(async groupe => {
await db.query('select * from postes where groupeId = ?', groupe.groupeId, function(err, result){
if (result != []){
endResult.push(result)
}
})
})
res.send(endResult)
}
})
})
【问题讨论】:
-
await result.map()不会做你想做的事,因为你在等待一个数组(因为.map()返回一个数组)而不是一个承诺。你可以做await Promise.all(result.map(...)) -
另外,
await db.query()也没有做任何有用的事情,因为你也在传递一个回调。如果你传递一个回调,那么它不会返回一个承诺。请不要在不了解您如何准确地等待承诺的情况下到处塞满await,因为这是对await唯一有用的东西。
标签: javascript mysql node.js arrays express