【发布时间】:2018-08-14 05:55:53
【问题描述】:
我正在尝试查找我的用户正在收听的所有音乐。我是这样做的:
User.find().exec((err, users) => {
users.forEach((user, index) => {
Musics.count({ idReader: user._id }, (err, count) => {
result.push({ mail: user.mail, count: count });
if (index >= users.length - 1) {
return res.json(result);
}
});
});
});
它有效,但并非每次都有效。有时我只有 30% 的用户,有时是 100%。我认为这是因为异步。但我不知道如何做不同的事情。谢谢!
【问题讨论】:
-
result来自哪里? -
您的用户收藏有多大?
-
Users 集合仅包含 3 个用户。
result是在User.find()之上声明的 var。let result = new Array(); -
是的,每当您在 forEach 中的最后一次计数完成时,它都会返回结果,这可能是也可能不是实际完成的最后一次计数。
标签: javascript node.js asynchronous mongoose