Bookshelf.js: 批量更新
Bookshelf.js: bulk update
我正在使用 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));
您必须借助查询生成器 (knex.js) 进行批量更新:
Endpoint
.query()
.whereIn('id', [1, 2, 3, /* ... */])
.andWhere({'organization_id': orgId})
.update({whatever: 'a value'})
.then(function(results) {
// ...
})
有关详细信息,请参阅 issue #402。
我正在使用 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));
您必须借助查询生成器 (knex.js) 进行批量更新:
Endpoint
.query()
.whereIn('id', [1, 2, 3, /* ... */])
.andWhere({'organization_id': orgId})
.update({whatever: 'a value'})
.then(function(results) {
// ...
})
有关详细信息,请参阅 issue #402。