2016-04-21 77 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,手动构建查询等),则有点难以提供具体的建议。但是基本的想法(假设你使用的是承诺,你应该这么做)是你想要生成一个代表每个批量插入的承诺数组。然后,一旦他们都解决了,就做点什么吧。