0

我不太明白,为什么这不起作用:

async.parallel([
  SomeStuff.find({}).remove,
  SomeStuff2.find({}).remove,
  SomeStuff3.find({}).remove
], done);

虽然这工作正常

async.parallel([
  function(callback) {
    SomeStuff.find({}).remove(callback)
  },
  function(callback) {
    SomeStuff2.find({}).remove(callback);
  },
  function(callback) {
    SomeStuff3.find({}).remove(callback);
  }
], done);

它实际上不一样吗?第一个抛出错误:

TypeError: Object #<Object> has no method 'cast'
at Query.remove (/path/to/project/node_modules/mongoose/lib/query.js:1366:10)

感谢您的帮助 :)

4

1 回答 1

0

问题是当你像这样传递函数本身时,你会丢失函数上下文。remove()是一个原型方法,所以它依赖于this正确的值。当您自己传递该方法时,该this值现在丢失了,因此它不能再做类似this.cast().

于 2014-10-08T18:06:35.740 回答