You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sozonov edited this page Dec 24, 2018
·
2 revisions
Гайдлайны по работе с ORM:
все что касается изменения данных в БД должно быть вынесено сразу в ORM, если это 2-3 или больше изменений
в ORM все модифицирующие кастомные методы, должны дожидаться записи в БД
когда вы делаете много модификаций, надо по возможности дожидаться их параллельно -- то есть собирать все в массив промисов
когда происходит несколько модификаций, то надо их все обрачивать в this.batch (если вы в ORM), либо batchModel, если вы в компоненте реакта. Для того, чтобы каждая модификация не триггерила перерендеринг всех компонент, где эти данные используются
model.set - заменяет объект целиком
// НЕВЕРНО!
model.set('users.${id}', {...user, score: 13}) // неверно, так как присваивание set происходит по ссылке
// ВЕРНО
model.set('users.${id}.score', 13) - если изменить нужно только одно поле
model.setDiffDeepAsync(`users.${id}`, {score: 13, name: 'Ivan'}) - если полей несколько
Нельзя напрямую менять данные в документе и в scope моделе.