javascript - 无法弄清楚 mongod 和 nodejs 的 promise

标签 javascript node.js mongodb

我有一个函数 getStuff() 需要返回针对 MongoDB 的查询结果。我正在使用 nodejs 和 mongod 模块。这是我得到的代码。

var mongo = require("mongod");
var url = "mongodb://localhost:27017/my-mongo";

function getStuff() {
    var db = new mongo(url, ["stuff"]);
    var promise = db.stuff.find()
        .then(function (result) {
            console.log(result);
            return result;
        }).done(function (data) {
            console.log(data);
            return data;
        });
    console.log(promise);
    return promise;
}

exports.getStuff = getStuff;

我显然遗漏了一些关于 promises 如何运作的信息。我在前两个 console.log() 调用中获得了良好的数据。但是 getStuff() 函数总是返回未定义的。这看起来应该是一个 super 简单的用例,但我正在用头敲 table 试图让它正常工作。任何帮助将不胜感激。

最佳答案

您的最后一个日志和返回语句运行为您的 .find.then.done 链仍在执行(这对您来说是异步的!)。这就是为什么 promise 仍然是 undefined 的原因。

尝试返回整个 promise,比如
var promise = db.stuff.find()... 试试
返回 db.stuff.find()...

关于javascript - 无法弄清楚 mongod 和 nodejs 的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30434488/

相关文章:

javascript - 在 html 中为调查分配数值

javascript - Knockout.js 太冗长?

linux - Linux 中的 Node.js 和打开文件限制

javascript - 在 js 中使用 Proxy 使 Promise 看起来同步实际上是如何工作的?

node.js - Mongoose QueryStream 新结果

javascript - 将字符串连接到 Promise

javascript - 是否可以在 Mongo 中执行接受任何参数的函数?

javascript - Node.js : Path error loading JSON file using express

node.js - MongoDB/mongoose 在两个模型之间创建关系?

Mongodb查询计算每个文档两个日期之间的天数