У меня есть список элементов с указанным 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
не сработает).
Не могли бы вы знать, как это сделать? Спасибо!