Bookshelf.js:批量更新

时间:2018-06-13 13:12:48

标签: knex.js bookshelf.js

我正在使用Bookshelf.js编辑一些记录。记录数量可能非常高。为了提高速度,我想要批量更新这些记录,或者至少在事务上下文中运行更新循环。如何使用Bookshelf.js执行此操作?如果无法做到这一点,我该如何使用Knex?

这是我目前的更新功能:

new Endpoint()
                    .where({
                        'organization_id': orgId,
                        'id': endpointId
                    })
                    .save(updatedEndpoint, {patch: true})
                    .then((endpoint) => {
                        Endpoint
                            .where({
                                'organization_id': orgId,
                                'id': endpointId
                            })
                            .fetch({withRelated: ['settings', 'organization']})
                            .then((newEndpoint) => {
                                ReS(res, {
                                    endpoint: newEndpoint
                                }, 200);
                            })
                            .catch(e => TE(e));
                    })
                    .catch(e => TE(e));

1 个答案:

答案 0 :(得分:1)

您必须使用查询构建器(knex.js)进行批量更新:

Endpoint
  .query()
  .whereIn('id', [1, 2, 3, /* ... */])
  .andWhere({'organization_id': orgId})
  .update({whatever: 'a value'})
  .then(function(results) {
    // ...
  })

有关详细信息,请参阅issue #402