首页 > 解决方案 > MongoDB findOne() 在函数中返回值但不返回节点中的值

问题描述

所以我试图用一个函数从节点中的 MongoDB 分配值。我的问题是,它找到了数据,但它在 findOne 函数之外返回 undefined 。

代码:

async function findFile(userid) {

    let ufile = mCollection.findOne({"uid": userid}, function(err, res) {
        console.log(res);
        return res;
    });

    console.log(ufile);

};

findFile(authId);

结果: 控制台日志

标签: javascriptnode.jsmongodb

解决方案


您正在回调内部返回。这意味着 mCollection.findOne 本身不返回任何值。

您可以做的是像这样记录回调中的值:

async function findFile(userid) {

    let ufile = mCollection.findOne({"uid": userid}, function(err, res) {

        console.log(ufile);

    });


};

findFile(authId);

或者将函数作为 Promise 运行,然后等待它:

async function findFile(userid) {

    let ufile = await mCollection.findOne({"uid": userid});
    console.log(ufile)

};

findFile(authId);

推荐阅读