Mongoose bulkWrite – 错误types为'q'

对于我的testing套件,我想批量写入数据库中的testing信息,然后批量删除整个testing中input的任何testing信息,以返回到干净的版本。 我这样做是通过在数据库上运行一个bulkWrite来传递通过nodeJS的require语句加载的JSON文件的内容。

问题在于数据集

[ { deleteOne: { username: 'test-author' } } ] 

传递给models[key].collection.bulkWrite(action[key]) ,其中key是感兴趣的模型的名称,action是JSON文件,我得到以下错误:

 { MongoError: Wrong type for 'q'. Expected a object, got a null. at Function.MongoError.create (/var/www/website/server/node_modules/mongodb-core/lib/error.js:31:11) at /var/www/website/server/node_modules/mongodb-core/lib/connection/pool.js:483:72 at authenticateStragglers (/var/www/website/server/node_modules/mongodb-core/lib/connection/pool.js:429:16) at Connection.messageHandler (/var/www/website/server/node_modules/mongodb-core/lib/connection/pool.js:463:5) at Socket.<anonymous> (/var/www/website/server/node_modules/mongodb-core/lib/connection/connection.js:339:20) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:176:18) at Socket.Readable.push (_stream_readable.js:134:10) at TCP.onread (net.js:548:20) name: 'MongoError', message: 'Wrong type for \'q\'. Expected a object, got a null.', ok: 0, errmsg: 'Wrong type for \'q\'. Expected a object, got a null.', code: 14, codeName: 'TypeMismatch' } 

我已经做了一些研究,一直无法find解决这个问题的方法。 错误本身是相当无意义的,所以我不能把握太多。 任何想法如何解决这个问题?

任何帮助将不胜感激! 干杯!

根据MongoDB API , deleteOnedeleteManyupdateOneupdateManyreplaceOnereplaceMany操作需要具有属性filter ,该过滤filter充当查询的filter。

然而, Mongoose的API显示了下面的(错误的)例子:

 Character.bulkWrite([ ... { deleteOne: { { name: 'Eddard Stark' } } } ]).then(handleResult); 

因此,发送的数据从以下变化:

 [{ "deleteOne": { "username": "test-author" } }] 

 [{ "deleteOne": { "filter": { "username": "test-author" }} }] 

我将确保将消息传递给mongoosejs开发组。