-
Notifications
You must be signed in to change notification settings - Fork 6
FAQ
Гайдлайны по работе с ORM:
-
все что касается изменения данных в БД должно быть вынесено сразу в ORM, если это 2-3 или больше изменений
-
в ORM все модифицирующие кастомные методы, должны дожидаться записи в БД
-
когда вы делаете много модификаций, надо по возможности дожидаться их параллельно -- то есть собирать все в массив промисов
-
когда происходит несколько модификаций, то надо их все обрачивать в this.batch (если вы в ORM), либо batchModel, если вы в компоненте реакта. Для того, чтобы каждая модификация не триггерила перерендеринг всех компонент, где эти данные используются
5.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 моделе. ` // НЕВЕРНО! game.title = 'New title' game.players = 10 $game.setDiffDeepAsync(game)
// ВЕРНО, но некрасиво game = _.cloneDeep(game) game.title = 'New title' game.players = 10 $game.setDiffDeepAsync(game)
// ВЕРНО $game.setEachAsync('', { title: 'New title', players: 10 })
`