我有一个函数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;
我显然错过了有关承诺如何运作的一些信息。我在前两个console.log()调用中获得了良好的数据。但是getStuff()函数总是返回undefined。这似乎应该是一个超级简单的用例,但我正在我的桌子上试着让它正常工作。任何帮助将不胜感激。
答案 0 :(得分:2)
您的上一个日志和返回语句在.find.then.done
链仍在执行时运行(对于您来说是异步!)。这就是promise
仍为undefined
的原因。
尝试返回整个承诺,而不是回复
var promise = db.stuff.find()...
尝试
return db.stuff.find()...
答案 1 :(得分:1)
......需要返回结果......
从getStuff
function getStuff(callback) {
var db = new mongo(url, ["stuff"]);
db.stuff.find()
.done(function (result) {
console.log(result);
callback(result);
}));
}
然后你可以这样称呼它
getStuff(function(data){
//here you will get your results
});