node.js - 如何返回 Node.js 回调

标签 node.js mongodb asynchronous callback mongoose

我有一个 node.js 方法,它使用 mongoose 来返回一些数据,问题是因为我在我的方法中使用回调,所以没有任何东西返回给客户端

我的代码是:

var getApps = function(searchParam){
    var appsInCategory = Model.find({ categories: searchParam});
    appsInCategory.exec(function (err, apps) {
        return apps;
    });
}

例如,如果我尝试使用 json 对象同步执行此操作,它将起作用:

var getApps = function(searchParam){
    var appsInCategory = JSONOBJECT;
    return appsInCategory
} 

我能做什么?

最佳答案

您无法从回调中返回 - 请参阅 this canonical about the fundamental problem .由于您正在使用 Mongoose,因此您可以为其返回一个 promise :

var getApps = function(searchParam){
    var appsInCategory = Model.find({ categories: searchParam});
    return appsInCategory.exec().then(function (apps) {
        return apps; // can drop the `then` here
    });
}

哪个会让你做:

getApps().then(function(result){
    // handle result here
});

关于node.js - 如何返回 Node.js 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30071891/

相关文章:

node.js - 如何通过终端安装 create-react-app

javascript - Express MongoDB 和 Mongoose 使用 findByIdAndRemove() 删除然后重定向

node.js - 如何使用官方mongodb客户端在node.js中实现mongodb分页?

Javascript Promises 就像回调一样嵌套得很深

javascript - 按升序排列天数

javascript - 如何使用webpack更新jade中的script标签?

http - 为什么浏览器请求不通过我的代理服务器?

javascript - async/await 不适用于 mongoDB 查询

c# - 如何使异步方法在任务类型上通用

.net - 继续任务<T>到任务<YOU>而不阻塞结果