mongoose:Query#exec

时间:2015-10-20 20:28:41

标签: node.js mongodb mongoose

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) { /* .. */ }
);

两者似乎都能正常运作。

1 个答案:

答案 0 :(得分:1)

.then()永远存在于猫鼬中。它允许传递回调,并且在较新版本的mongoose中也会返回一个promise。许多代码(旧的和新的)仍然使用回调,因此这可能比then()更经常使用。

exec()方法在很久以后被引入,当时mongoose被宣传 - 但旧代码不应该被破坏,所以JOIN将永远保留。