node.js - 如何使此函数返回数组中集合中所有文档的列表。我正在使用 mongodb 和 bluebird 吗?

标签 node.js mongodb bluebird

1.下面的函数应以数组形式返回集合报告中的所有文档。

function listdocs(){
        var valuess=[];
        MongoClient.connectAsync(murl).then(function(db) {


        return db.collection('reports').find({}).toArrayAsync();
        }).then(function(reports) {
            valuess=reports;


        }).catch(function(err) {
            console.log(err);
        });

    return valuess;
    }

最佳答案

正如您所知,在 Node.js 中一切都是异步的,因此如果您调用 listdocs() 它甚至会在 MongoClient.connectAsync 返回之前返回。因此,您需要更改 listdocs 以接受在获取结果时调用的回调。

代码应如下所示:

function listdocs(callback) {
    MongoClient.connectAsync(murl).then(function(db) {
        return db.collection('reports').find({}).toArrayAsync();
    }).then(function(reports) {
        callback(null, reports)
    }).catch(function(err) {
        callback(err, null);
    });
}

之后您可以像这样调用该函数:

listdocs(function(err, data) {
    if (err) {
        // do something with the error
    }

    // do something with the result
});

关于node.js - 如何使此函数返回数组中集合中所有文档的列表。我正在使用 mongodb 和 bluebird 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36269890/

相关文章:

arrays - Mongoose 中的子文档数组

regex - Mongo正则表达式查询嵌入对象列表中的字段

javascript - 在 Meteor.js 中显示来自对象的 FS.File 引用

javascript - bluebird 中有没有像 async.waterfall 一样工作的方法

javascript - 无法获得嵌套的 promise 将值返回到下一个 promise 链

Node.js Express express.json 和 express.urlencoded 与表单提交

javascript - 将缓冲区转换为数组

node.js - 如何使用 fetch API 解析 json 响应

javascript - 使用 Promise/Bluebird 进行并行 Mongoose 查询?

node.js - 如何在PowerShell中取消 “Terminate batch job (Y/N)”确认?