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

Javascript 数组推送在toArray函数内部不起作用使用mongoDB,javascript,mongodb,express,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) => {

我试图循环遍历集合中的所有文档,并将其存储在全局变量中,但看起来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);
})
在填充
数据之前,正在调用您的
控制台.log(数据)
。将
控制台.log(数据)
移动到
if
块中,如:

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

很可能这就是问题所在。尝试使用异步方法