2015-10-20 35 views
2

Mongoose的Query#exec方法说它执行查询并返回一个Promise对象。我不明白的是为什么这是必需的,因为已经有一个Query#then方法。猫鼬:查询#exec的目的是什么

具体的例子:

考虑一些简单的模型

var Foo = mongoose.model("Foo", {name: String}); 

是什么

Foo.find().then(
    function(res){ /* .. */ }, 
    function(err) { /* .. */ } 
); 

Foo.find().exec().then(
    function(res){ /* .. */ }, 
    function(err) { /* .. */ } 
); 

两者之间的差异似乎工作道具erly。

+0

第一首先不应该给你正确的任务结果.. –

+0

@ Shih-MinLee对不起,但我不明白你的意见。你能向我解释吗? – muffel

回答

1

query.exec(function(err, result))永远存在于猫鼬中。它允许传递回调,并在新版本的猫鼬也返回一个承诺。很多代码(旧的和新的)仍然使用回调,所以这可能仍然比.then()更经常使用。

then()方法后来被引入很久,当猫鼬promisified - 但旧代码不应该被打破,所以exec()将永远留下我猜。