javascript - 数组推送在 toArray 函数内部不起作用使用 mongoDB

标签 javascript mongodb express

<分区>

我试图遍历集合内的所有文档,并存储在全局变量中,但看起来 push() 不起作用并在 toArray() 内返回空数组 [], 有什么建议吗?

const mongo = require('mongodb');
const url = 'mongodb://localhost:27017/test'

var data = [];

const collections = mongo.connect(url, { useNewUrlParser: true }, (err, db) => {
    console.log('connection success');

    db.db().listCollections().toArray((err, colls) => {
        var collsPrinted = 0;
        colls.forEach(element => {
            db.db().collection(element.name).find().sort({"_id":-1}).limit(1).toArray((err, doc) => {

                data.push(doc);
                if (++collsPrinted == colls.length) db.close(); 
            });
        });        
    });
    console.log(data);
})

最佳答案

您的 console.log(data)data 被填充之前被调用。将您的 console.log(data) 移动到您的 if block 中,例如:

if (++collsPrinted == colls.length) {
     db.close();
     console.log(data);
}

关于javascript - 数组推送在 toArray 函数内部不起作用使用 mongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56448182/

相关文章:

没有字段名的mongodb查询结果

linux - Node.js Express 静态 Assets 的大小写敏感性

javascript - req.ip 可以在 Express.js 中伪造吗?

javascript - 将 props 从子组件传递到主组件

mongodb - "missing : after property id"在简单 map/reduce 的上下文中意味着什么?

javascript - 如果我添加 alert(),为什么我的 JavaScript 函数执行不确定?

python - 使用 pymongo 插入嵌套字段时清理用户输入

windows - 在 Windows 7 上启动 Node 应用程序时出现问题

javascript - 为什么要采用这种包装 javascript 的模式

javascript - 对 javascript 中的构造函数感到困惑