Mongoose在async.parallel中删除

时间:2014-10-08 18:03:04

标签: node.js mongodb mongoose node-async

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

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)

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

问题是,当您像这样传递函数时,您将丢失函数上下文。 remove()是原型方法,因此它依赖于this的值是正确的。当您单独传递方法时,this值现在已丢失,因此它无法执行this.cast()之类的操作。