[英]Insert multiple records in mongodb with nodejs mongodb driver and async.js
目前,我試圖通過nodejs驅動程序在mongodb中執行許多條目時遇到回調地獄。 只有插入了所有記錄(在數組中),才應執行某些任務。 我簽出了async.each方法,但是主要的問題是,如果遇到錯誤,它將調用回調。 因此,集合中的其余項目將不被處理。
那么,使用async.js處理此類問題的正確方法是什么?
PS:請舉一個示例,這對我非常有用,因為我只是從async.js開始,並且很少(如果有的話)示例可用於使用api將其批量插入mongodb。
讓我們描述問題。
在這種情況下,我可以建議您使用批量操作
// array of operations
let batch = yourCollection.initializeUnorderedBulkOp();
async.each (yourArrayToIterate, function (item, next) {
// add some Operation that will be execute lated
batch.insert({firstName:"Daniele"});
batch.find({firstName: "Daniele"}).updateOne({$set: {lastName:"Tassone"}});
// other code to do...some Old Library
try {
someOldLibrary.doSomethingThatCanCreateAnExpection();
} catch (e) {
//some error happen
}
// more modern approach with New Library
someNewLibrary
.then(function (result){
})
.catch(function (err) {
// some error happen
}
}, function (err, result) {
// Flow is now completed, take a decision
if (err) {
// do nothing, maybe?
} else {
// execute all the Ordered Bulk
batch.execute().then(function(executionResult) {
// done, you can
});
}
});
注意:1)BulkOperation可以有序和無序。 無序執行性能更好,即使發生某些錯誤也可以繼續工作2)有序執行是順序執行的,即使發生某些錯誤,MongoD也不會繼續執行到Bulk中的下一個元素。
文檔: http : //mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#initializeOrderedBulkOp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.