Как обновить много фильтрованных элементов, чтобы уменьшить значение свойства на 1 - PullRequest
0 голосов
/ 04 мая 2020

У меня есть список элементов с указанным c атрибутом позиции типа номер. При удалении элемента в этом списке я sh обновляю позицию всех остальных элементов.

Пример: в моем списке 3 элемента; A, B, C, с их позициями соответственно равными 1, 2, 3. Если я удаляю B, то элемент C должен иметь свою позицию, обновленную с 3 до 2.

Я обнаружил, что могу использовать функцию updateAll для выполнения этих обновлений, но не могу понять, как уменьшить сами элементы:

Menusection.observe('before delete', function (ctx, next) {
  Menusection.findOne({ where: ctx.where }, (err, deletedMenuSection) => {
    if (err) throw(err);
    // Update all elements from the same project with their position greater than the deleted object position
    // The decrease their position by 1
    Menusection.updateAll({
      projectId: deletedMenuSection.projectId,
      position: { gt: deletedMenuSection.position },
    },
    { '$inc': { position: -1 }}, // I don't know what to use here, I can't make it work...
    function (err, info) {
      if (err) throw(err);
      console.log('updated items: ', info);
    });

  next();
});

Я использую базу данных с типом SQL ( вероятно, поэтому трюк $inc не сработает).

Не могли бы вы знать, как это сделать? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...