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 ответ
Решение
Вам придется прибегнуть к построителю запросов (knex.js) для массовых обновлений:
Endpoint
.query()
.whereIn('id', [1, 2, 3, /* ... */])
.andWhere({'organization_id': orgId})
.update({whatever: 'a value'})
.then(function(results) {
// ...
})
Смотрите проблему № 402 для получения дополнительной информации.