【问题标题】:unable to return the result from a method in node js [duplicate]无法从节点 js 中的方法返回结果 [重复]
【发布时间】:2018-03-22 13:07:27
【问题描述】:

我正在尝试使用函数从数据库中获取结果,但它显示未定义,但是当我以相同的方法打印结果时,它正在打印..我知道节点 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;


    });


}

当我在其他模块中打印它时,它正在打印 undefined

它试图使用这个console.log(dboperations.search(req.body.userid))进行打印

【问题讨论】:

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


    【解决方案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/

    【讨论】:

    • 感谢它的工作,但它获取数据库中的所有记录,但我只需要我作为参数发送的记录,即用户 ID
    • @vamsireddy 秒我会修复
    • 感谢他的工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2021-07-04
    • 2023-03-21
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多