Skip to content
This repository was archived by the owner on Sep 22, 2021. It is now read-only.
Sozonov edited this page Dec 24, 2018 · 2 revisions

Гайдлайны по работе с ORM:

  1. все что касается изменения данных в БД должно быть вынесено сразу в ORM, если это 2-3 или больше изменений

  2. в ORM все модифицирующие кастомные методы, должны дожидаться записи в БД

  3. когда вы делаете много модификаций, надо по возможности дожидаться их параллельно -- то есть собирать все в массив промисов

  4. когда происходит несколько модификаций, то надо их все обрачивать в 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'}) - если полей несколько

  1. Нельзя напрямую менять данные в документе и в 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 })

`

Clone this wiki locally