我想使用forEach(节点js中的JavaScript)获取值,然后将其存储为数组。但是在循环结束后,我的数组为空或未存储。我不知道问题的原因,请提供任何帮助。
Form1.find({}, function(err, alluser) {
if (err) {
res.redirect("back");
} else {
var usernames = []; // I want to store the values here
alluser.forEach(function(getuserid) {
var userids = getuserid.userid;
User.findById(userids, function(err, getnames) {
if (err) {
var nameitself = userids;
usernames.push(nameitself);
} else {
var firstname = getnames.firstName;
usernames.push(firstname);
console.log(usernames); // this returns the stored values at each iterations
}
});
})
console.log(usernames); // here I want the values but is empty [], I don't know the problem
res.send(usernames) // this also sends empty array
}
});
答案 0 :(得分:0)
问题是您在考虑同步操作(即逐行执行)方面的代码。
但是实际上,以下行正在访问db,因此它返回了回调
User.findById(userids,function(err,getnames)