Mongoose的Query#exec方法说它执行查询并返回一个Promise对象。我不明白为什么这是必需的,因为已经存在Query#then方法。
具体例子:
考虑一些简单的模型
var Foo = mongoose.model("Foo", {name: String});
之间有什么区别
Foo.find().then(
function(res){ /* .. */ },
function(err) { /* .. */ }
);
和
Foo.find().exec().then(
function(res){ /* .. */ },
function(err) { /* .. */ }
);
两者似乎都能正常运作。
答案 0 :(得分:1)
.then()
永远存在于猫鼬中。它允许传递回调,并且在较新版本的mongoose中也会返回一个promise。许多代码(旧的和新的)仍然使用回调,因此这可能比then()
更经常使用。
exec()
方法在很久以后被引入,当时mongoose被宣传 - 但旧代码不应该被破坏,所以JOIN
将永远保留。