Bookshelf.js: массовое обновление - PullRequest
0 голосов
/ 13 июня 2018

Я редактирую некоторые записи с помощью 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 голосов
/ 13 июня 2018

Вам придется прибегнуть к построителю запросов (knex.js) для массовых обновлений:

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

Подробнее см. выпуск # 402 .

...