【发布时间】:2014-08-28 11:59:07
【问题描述】:
我在 MongoDB 中使用 Node.js,更具体地说,是 MongoLab 和 Mongoose。
在数据库中,我有两个集合,pours 和 users。一个用户对象将通过共享 cid 链接到多个浇筑对象。
我需要遍历一组用户对象。但是 for 循环不知何故不适用于我想用来修改数组的异步函数。
express.leaderboard = new Array();
mongoose.Users.find(function(err, users) {
for (var i = 0; i < users.length; i++) {
express.leaderboard[express.leaderboard.length] = users[i];
};
for (i = 0; i < express.leaderboard.length; i++){
updateOunces(i, function(a, fluidOunces){
console.log(a);
express.leaderboard[a].set('totalOunces', fluidOunces);
});
}
});
这是我的函数,它将检索用户的总流体盎司数。
function updateOunces(i, callback){
//console.log(express.leaderboard[b].cid);
mongoose.Pours.find({
"cid": express.leaderboard[i].cid
}).exec(function(err, result) {
var userOunces = 0.0;
if (!err) {
for (i = 0; i < result.length; i += 1) {
for(j = 0; j < result[i].pour.length; j += 1){
userOunces += result[i].pour[j].fluidOunces;
}
}
callback(i, userOunces);
return;
express.leaderboard[i].set ('totalOunces' , userOunces);
} else {
console.log(err)
};
});
};
有没有办法迭代并为排行榜数组中的每个对象添加一个新属性?使用异步?谢谢!
【问题讨论】:
标签: node.js asynchronous mongoose