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 тук, можете да върнете 422 HTTP код на състоянието с грешки като речник. Грешките ще бъдат добавени към модела от библиотеката с данни на Ember чрез ключ като свойство на модела и самият модел ще се счита за невалиден. Моделът автоматично ще напусне това състояние, след като всяко свойство с грешки се промени.

Можете да следите за грешки в свойството версия и reloadRecord, след като се появи грешка при едновременност.

person Myslik    schedule 20.04.2013