findOne 查询正在从数据库返回用户。当我 console.log(user) 时,它确实打印出用户数据。但由于某种原因,没有推送到 user_contacts。它只是作为一个空数组返回。
get_contacts: function (req, res){
var user_contacts = [];
for(var i=0;i<req.body.contacts.length;i++){
User.findOne({_id: req.body.contacts[i]._User}, function (err, user) {
if(user){
console.log(user);
user_contacts.push(user);
}else{
console.log("Error");
}
})
}
console.log(user_contacts);
res.json(user_contacts);
}
这应该很简单,但只是看不出我做错了什么。感谢您的帮助。
最佳答案
由于调用是异步的 - 您的日志和响应会在一切完成之前执行。您可能还会遇到循环异步调用的一些问题 - 最好的选择是使用 $in
然后返回:
get_contacts: function (req, res){
var ids = req.body.contacts.map(function(contact) { return contact._User });
User.find({_id: {$in: ids}}, function(err, users) {
res.json(users)
});
}
关于javascript - 无法插入空数组 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567389/