无法从节点js中的方法返回结果

时间:2018-03-22 13:07:27

标签: javascript node.js mongodb callback mongodb-query

我正在尝试使用函数从数据库中获取结果,但它显示未定义但是当我打印结果时,它正在打印相同的方法..我知道节点js在异步中执行的原因但我不知道如何克服这个问题

var mongo=require('../routes/mongo')

exports.search=function(userid){
    // console.log(userid)

    mongo.get().collection("customers").find({"userid":userid}).toArray(function(err, result) {

        if (err) throw err;

        // console.log(result)

        return result;


    });


}

当我在其他模块中打印时,它打印未定义

它尝试使用此console.log(dboperations.search(req.body.userid))

进行打印

1 个答案:

答案 0 :(得分:1)

因为执行数据库操作是异步的,所以无法将结果作为同步。你可以使用回调。

var mongo=require('../routes/mongo')

exports.search=function(userid, callback){
    // console.log(userid)

    mongo.get().collection("customers").find({"userid":userid}).toArray(function(err, result) {

        if (err) throw err;

        // console.log(result)

        callback(result)
    });
}

然后调用函数

dboperations.search('id of the user', function (result) {
    console.log(result)
})

关于异步编程的一篇很好的文章https://blog.risingstack.com/node-hero-async-programming-in-node-js/