Ember.js Разрешение конфликта данных / Сбой при конфликте

При использовании Ember.js с REST-адаптером ember-data существует ли какая-то стратегия разрешения конфликтов для обработки сохраняющихся данных на сервере?

По крайней мере, в моем случае сбоя и отката было бы достаточно в случае конфликтов, если пользователь может быть проинформирован об этом. Итак, потребуются ли для этого какие-то данные/структура? Какой-то идентификатор «версии» в моделях, где сервер может проверить представленные версии и убедиться, что у клиента есть самые последние данные. Есть ли что-нибудь в Ember.js, чтобы сделать это немного менее ручным? И если да, то что?

Изменить: Кроме того, есть ли что-нибудь, что помогает с конфликтами массовых коммитов моделей? Скажем, у нас есть родительская модель с отношением hasMany к нескольким дочерним моделям, и все они должны быть одновременно сохранены в базе данных. Если иметь дело только с кодом на стороне сервера, я чувствую, что могу обернуть это транзакцией в любой базе данных, которую я использую, и потерпеть неудачу, если что-то устарело. Как это отразится на транзакциях Ember.js?

Я вижу флаг bulkCommit в классе адаптера. Кажется, это позволяет массово фиксировать объекты одного типа в одном запросе. Однако, если я сохраняю записи более чем одного типа, это приведет к нескольким запросам к серверу. Есть ли способ либо а) сделать это одним запросом к серверу, либо б) сопоставить транзакции ember-data с транзакциями на сервере, поэтому, если транзакция на сервере не удалась и ее необходимо откатить, транзакция ember-data также не работает?

[Я оцениваю Ember.js для предстоящего проекта и тестирую несколько функций и то, на что похоже разработка. На самом деле я рассматриваю возможность большего количества обновлений в реальном времени с использованием socket.io или аналогичного. Я вижу, что derby.js сделал некоторые шаги в сторону автоматического разрешения конфликтов]


person Michal Charemza    schedule 14.03.2013    source источник


Ответы (1)


Как видно из исходного кода Ember Data здесь вы можете вернуть код состояния HTTP 422 с ошибками в виде словаря. Ошибки будут добавлены в модель библиотекой данных Ember по ключу как свойству модели, а сама модель будет считаться недействительной. Модель автоматически выйдет из этого состояния после изменения каждого свойства с ошибками.

Вы можете следить за ошибками в свойстве version и reloadRecord при появлении ошибки параллелизма.

person Myslik    schedule 20.04.2013