我想获取数据库中每个商店的用户数量。因此,我在数据库中调用了两个电话,一个用于商店,另一个用于用户。我有一个问题,我的“nbr_users”返回值中没有任何内容。您能帮忙吗?
function nbr_users(key) {
return new Promise((resolve, reject) => {
db.User.find({
shop: key
}, (err, users) => {
if (err) reject(err)
else {
resolve(users.length) // Maybe my problem is here...
}
})
})
}
module.exports = (req, res) => {
db.Account.find({},
(err, accounts) => {
if (err) res.json(err)
else {
var accountMap = {}
var i = 0;
accounts.forEach(async function(account) {
accountMap[i++] = {
users: await nbr_users(account.key) // the value I want
}
});
res.json({user_list: accountMap})
}
})
}
最佳答案
您从 nbr_users(key)
返回了一些内容。你有一个 promise ,那么你可以使用.then
。
因为你处于异步循环中。函数,并且您不想丢失 i
我建议您使用匿名 Immediately-invoked function expression 。
function(i){
nbr_users(account.key).then(function(length){
accountMap[i] = {
users: length
})
}(i++);
关于javascript - 如何解决我的异步函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49997814/