В loopback мне нужно обработать Patch in loop.Всякий раз, когда я пытаюсь пропатчить свойство, мне может потребоваться обновить свойство в одной или во всех других записях таблицы / коллекции.Я использовал before save
hook и вызывал updateInLoop
, как показано ниже, чтобы обновить другие записи.
module.exports = function(Model) {
Model.observe('before save', async(ctx, next) => {
if(ctx.Data) {
updateInLoop(ctx.Data, Model);
}
});
}
const updateInLoop = async function(data, Model) {
var modelDbData = await Model.find();
for(let entity in modelDbData) {
if(entity.property > threshold){
entity.property = entity.property + 1;
await Model.upsert(model);
}
}
}
Кажется, это работает нормально, если цикл в updateInloop
не выполняется большеодин раз.Всякий раз, когда цикл нужно запускать более одного раза, код не работает должным образом.
Я обнаружил, что неожиданное поведение связано с обработкой before save
для каждого действия обновления в цикле.Как это можно решить?