javascript - 无法从 Node js中的方法返回结果

标签 javascript node.js mongodb callback mongodb-query

<分区>

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

最佳答案

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

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/

关于javascript - 无法从 Node js中的方法返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49429544/

相关文章:

java - 使用Java更新mongodb的值

javascript - JS 函数不适用于 Internet Explorer 中的多个输入文本字段

javascript - 保留对象数据

node.js - 如何在端口 443 上运行 nodejs 应用程序

mongodb - 想要在 Mongo 中更新数组对象值的数组

java - 在 Spring Data Mongo 中设置自定义转换器

javascript - 搜索时如何添加透明背景?

javascript - 从ajax响应返回数据

node.js - 使用 Mongoose 的多个组

asynchronous - Node.js异步初始化问题