mongoose:Query#exec的目的是什么?
Mongoose的Query#exec方法表示它执行查询并返回一个Promise对象。 我不明白的是为什么这是必需的,因为已经有一个查询#然后方法。
具体例子:
考虑一些简单的模型
var Foo = mongoose.model("Foo", {name: String});
会有什么区别?
Foo.find().then( function(res){ /* .. */ }, function(err) { /* .. */ } );
和
Foo.find().exec().then( function(res){ /* .. */ }, function(err) { /* .. */ } );
两者都似乎正常工作。
query.exec(function(err, result))
永远存在mongoose中。 它允许传递callback,并在新版本的mongoose也返回一个承诺。 很多代码(旧的和新的)仍然使用callback,所以这可能比.then()
更常用。
then()
方法在后来被引入,当mongoose被promisified – 但旧的代码不应该被破坏,所以exec()
将永远留下我猜。