Mongoose bulkWrite - 'q' 的类型错误

Mongoose bulkWrite - Wrong type for 'q'

对于我的测试套件,我想在数据库中批量写入测试信息,然后批量删除在整个测试过程中输入的任何测试信息以恢复到干净状态。我通过 运行 数据库上的 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' }

我做了一些研究,但未能找到解决此问题的方法。错误本身是毫无意义的,所以我无法从中了解太多。知道如何解决这个问题吗?

如有任何帮助,我们将不胜感激! 干杯!

根据 MongoDB APIdeleteOnedeleteManyupdateOneupdateManyreplaceOnereplaceMany 操作需要有一个 属性 filter 作为查询的过滤器。

但是 Mongoose's API 显示了以下(错误的)示例:

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

因此,发送过来的数据从:

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

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

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