假设我有以下功能:
Person.find({ surname: "Doe" }).only("name", "surname").run(function (err, people) {
});
这是我尝试使用承诺:
Q.nfcall(Person.find.only('name', 'surname').run, {surname: 'Doe'});
我应该在哪里使用promises插入only()
函数的参数?
谢谢
答案 0 :(得分:3)
首先,如果你使用的是Node.js 0.12+或io.js,你不需要使用Q或其他库来支持promises,因为它们本身可用。
其次,您似乎正在使用Mongoose,它本身支持承诺:http://mongoosejs.com/docs/harmony.html
当你调用Model.find()时,它已经返回一个promise,所以你可以这样做:
var promise = Person.find({ surname: "Doe" }).only("name", "surname")
promise.then(...)
答案 1 :(得分:2)
only
的论据应该放在他们总是去的地方,就像find
那样。它只是run
你要通过回调来调用并获得承诺:
Q.nfcall(Person.find({ surname: "Doe" }).only("name", "surname").run)
.then(function(people){…}, function(err) {…});
但可能你不得不使用Q.ninvoke
:
Q.ninvoke(Person.find({ surname: "Doe" }).only("name", "surname"), "run")
.then(function(people){…}, function(err) {…});