javascript - 无法插入空数组 JS

标签 javascript arrays

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/

相关文章:

javascript - 将 html 标签放入字符串中

javascript - 恢复div的css属性

javascript - 如何使用 async 或 Promise Node/Express

javascript - 合并两个不包含某些值的字符串数组

Javascript:如何轻松地用第二个对象的数据替换对象值?

javascript - 如何使用过滤器更改原始数组?

javascript - 删除特定文本和换行符

javascript - Dom 网格、固定内部的流体等等

Javascript - 将数组插入字典中

python - 如何取消除 argmax 之外的所有条目?