【问题标题】:NodeJS Promise.all for DB requests用于数据库请求的 NodeJS Promise.all
【发布时间】:2020-05-22 18:50:46
【问题描述】:

如何向数据库发出多个请求,等待所有请求的结果并返回结果? 我尝试使用 Promise.all,但我得到的只是控制台中的 [undefined]。

MongoClient.connect(url, function (err, db) {
    if (err) throw err;
    var dbo = db.db("DBusers");
    var query = {};
    var U4 = dbo.collection("users");  
    const promises = [
        U4.find({}).count(function (err, result) { return result; }),
        U4.find({}).count(function (err, result) { return result; })
    ];

    Promise.all(promises).then(function (results) {
        console.log(results);
    }).catch(function (err) {
        console.log(err);
    });

    db.close();


});

【问题讨论】:

标签: node.js mongodb promise


【解决方案1】:

你使用一个回调函数来Promise.all 数组。使用Promise.all的正确方法:

const promises = [
    U4.find({}).count(),
    U4.find({}).count()
];

默认情况下返回一个promise,你必须通过promise数组到Promise.all。

【讨论】:

    【解决方案2】:

    我想我找到了答案, 我不得不改为:

    const promises = [
                U4.find({}).count(),
                U4.find({}).count()
    ];
    

    【讨论】:

    • 您可以使用以下代码向您的数据库发出多个请求(当您在承诺中定义它们时)。当所有请求完成后,您可以返回它们,或者发送到您的前端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2019-04-21
    • 2016-09-25
    • 1970-01-01
    • 2020-11-15
    • 2020-12-16
    相关资源
    最近更新 更多