2016-04-21 105 views
0

我有對象的像這樣的的node.js陣列的陣列 -lodash:對象

[ 
    { sid: 1095, a: 484, b: 'someval1' }, 
    { sid: 1096, a: 746, b: 'someval5' }, 
    { sid: 1097, a: 658, b: 'someval7' }, 
    { sid: 1098, a: 194, b: 'someval3' } 
] 

一個)是否有可能更新和刪除陣列成員就地基於SID和止跌不會減慢性能表現的速度?

b)如果我需要對數組進行塊化並針對塊啓動異步代碼(比如插入到數據庫中,每次記錄100條記錄)異步如何與lodash的同步代碼混合?

指針表示讚賞。

回答

0

a)有兩種方法可以實現這一點。首先,你可以使用var newArr = _.keyBy(arr, 'sid');實例化一個對象。然後你可以直接參考你想要編輯的項目newArr[sid].a = 494。另一種選擇是使用的_.indexOf_.find,所以var index = _.indexOf(arr, _.find(arr, { sid: sid }));的組合,然後使用indexarr[index].a = 494

b)中lodash有一個方法_.chunk編輯。所以

var chunked = _.chunk(arr, 100); 
var promises = chunked.map(item => db.bulkInsert(item)); 

Promise.all(promises) 
    .then(result => { 
    // Do whatever else you want 
    }); 

我希望這是有幫助的。 b)如果不知道如何處理數據庫操作(使用ORM,手動構建查詢等),則有點難以提供具體的建議。但是基本的想法(假設你使用的是承諾,你應該這麼做)是你想要生成一個代表每個批量插入的承諾數組。然後,一旦他們都解決了,就做點什麼吧。