无法弄清楚mongod和nodejs的承诺

我有一个函数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。 这似乎应该是一个超级简单的使用案例,但我正在我的桌子上敲我的头,试图让它正常工作。 任何帮助将不胜感激。

…需要返回结果…

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 }); 

你的最后一个日志和返回语句运行,你的.find.then.done链仍在执行(这是asynchronous的亚!)。 这就是为什么promiseundefined

尝试返回整个承诺,而不是
var promise = db.stuff.find()...尝试
return db.stuff.find()...