gpt4 book ai didi

javascript - nodeJS/ express : what's wrong with this RSVP promise?

转载 作者:搜寻专家 更新时间:2023-11-01 00:43:51 25 4
gpt4 key购买 nike

我正在使用 nodeJS,运行 express4 框架来创建 API。我正在使用 RSVP.js 来实现 promise 。

worker.getFamilies是外部模块调用的,这里不做体现。调用者期望返回一个包含结果的对象。

在 worker.getFamilies 内部:- 我正在使用 mongoose 查询 mongoDB(有效,我们得到了结果)

  • 我正在使用 promise 在 mongoose 可用时从其获取响应对象。这样可行。

  • 然后我尝试返回 JSON.stringify(results);给 worker.getFamilies 的调用者,那是行不通的。调用者返回“undefined”。请帮忙。

    var worker = exports;
    var RSVP = require('rsvp');

    var getFamiliesFromDB = function(DBconnection){
    var promise = new RSVP.Promise(function(resolve, reject){
    DBconnection.find({} ,{limit:10, sort: [['_id',-1]]}).toArray(function(e, results){
    console.log('results:', results);
    resolve(results);
    });
    });
    return promise;
    }

    worker.getFamilies = function(DBConnection){
    getFamiliesFromDB(DBConnection).then(function(results){

    //this works
    console.log('here are the fams from the promise', results);

    //this doesnt work like i want it to
    return JSON.stringify(results);
    });
    };

最佳答案

好吧,对于初学者来说,您的 worker.getFamilies 函数中没有单个 return 语句,所以这就是它返回 undefined 的原因(如果你没有显式返回,这就是 JavaScript 自动返回的内容)。

你唯一的返回是在 .then 处理程序中。您需要返回 promise :

worker.getFamilies = function(DBConnection){
// note how we've added a `return` here!
return getFamiliesFromDB(DBConnection).then(function(results){
console.log('here are the fams from the promise', results);
return JSON.stringify(results);
});
};

现在我们的函数返回了,我们可以使用它的返回值:

// from caller site:
worker.getFamilies(dbconn).then(function(jsonResults){
console.log("Got results!", jsonResults);
});

关于javascript - nodeJS/ express : what's wrong with this RSVP promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25411630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com