2017-04-15 18 views
2

對於我的測試套件,我想批量測試數據庫中的測試信息,然後批量刪除整個測試中輸入的任何測試信息以返回乾淨的版本。我這樣做是通過在數據庫上運行一個bulkWrite來實現的,我通過nodeJS的require語句加載了一個JSON文件的內容。Mongoose bulkWrite - 'q'的錯誤類型

的問題是,對於數據集

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

傳遞給models[key].collection.bulkWrite(action[key]),其中關鍵是興趣和行爲模式的名稱是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' } 

我已經做了一些研究,並一直無法找到解決這個問題的方法。這個錯誤本身是沒有意義的,所以我無法從中理解。任何想法如何解決這個問題?

任何幫助將不勝感激! 乾杯!

+0

json文件沒有模型名稱,所以它拋出null值。 –

+0

您是否可以發佈一些示例數據以便重現問題 –

+0

@ KARTHIKEYAN.A:我必須傳遞模型名稱嗎?最終導致調用'models [key] .collection.bulkWrite(action [key])'解決爲'Author.collection.bulkWrite(action.Author)' - 因此我懷疑這個集合的範圍是Author模型 –

回答

2

作爲每MongoDB API,所述deleteOnedeleteManyupdateOneupdateManyreplaceOne,和replaceMany操作需要有一個屬性filter其充當過濾器的查詢。

然而Mongoose's API顯示以下(誤)例如:

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

因此,送過來的變化從數據:

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

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

我會確保將消息傳遞給mongoosejs開發組。

+0

的相同問題記錄在這裏https://github.com/Automattic/mongoose/issues/5168 –