我有一个函数 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/