我使用Node.js与MongoDB,更具体地说,MongoLab和Mongoose。
在DB中,我有两个集合,pours和users。用户对象将链接到具有共享cid的多个浇筑对象。
我需要迭代一组用户对象。但是对于循环,我不想使用asyn函数来修改我的数组。
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)
};
});
};
有没有办法迭代并向排行榜数组中的每个对象添加新属性?使用ASYN?谢谢!
答案 0 :(得分:0)
使用async库。
实施例)
mongoose.Users.find(function(err, users) {
async.each(users, function(user, callback) {
// perform updates here, per user.
callback();
}, function(err) {
// everything is complete.
});
});