【发布时间】:2014-08-03 03:25:15
【问题描述】:
我有一个用户 ID 数组 (MongoDB Objectids),我想遍历每个用户 ID,在我的 MongoDB 用户数据库中找到它的用户条目,然后更新它,比如修改用户的年龄。然后只有当每个用户都更新了,我才想说res.send(200); 在我的Node.js Express 应用程序中。
我从以下代码开始,由于对findById 的异步调用,这是完全错误的:
for (var i = 0; i < userIDs.length; i++) {
var userID = userIDs[i];
User.findById(userID, function (err, user) {
if (err) throw err;
// Update user object here
user.save(function (err, user) {
if (err) throw err;
res.send(200);
});
});
}
有什么想法可以做到这一点吗?是否有findById 的同步版本?或者也许是一种通过数组map 并将函数应用于每个元素的方法?
谢谢!
【问题讨论】:
-
“由于异步而完全错误”,你是真的吗?故意异步不阻塞
-
@IlanFrumer 我的意思是当我有多个要更新的对象时,我在异步块中做
res.send(200)是完全错误的。当然我知道不阻塞是故意异步的。