2013-03-14 141 views
4

如果將Ember.js與ember-data REST適配器一起使用,是否有某種衝突解決策略用於處理持久數據到服務器?Ember.js數據衝突解決/衝突失敗

對於我的情況來說,至少,對於我的情況來說,如果發生衝突,用戶可以被告知這種情況,故障和回滾就足夠了。那麼,這種數據/結構會需要嗎?模型上的某種「版本」標識,服務器可以檢查提交的版本,並確保客戶端具有最新的數據。 Ember.js中有沒有什麼可以使這個手冊少一些?如果是這樣,什麼?

編輯:另外,有沒有什麼可以幫助模型批量提交的衝突?假設我們有一個與多個子​​模型具有「hasMany」關係的父模型,並且它們都將同時持久保存到數據庫中。如果只是處理服務器端代碼,我覺得我可以將它包裝在我正在使用的任何數據庫中的事務中,並且如果某些事情已過期,則會失敗。這如何轉化爲Ember.js交易?

我在Adapter類中看到一個標誌bulkCommit。這似乎能夠在一個請求中批量提交相同類型的對象。但是,如果我持續記錄多個類型的記錄,那麼這會導致對服務器的多個請求。有沒有一種方法可以:a)在向服務器的一個請求中發生這種情況,或者b)將ember-data的事務與服務器上的事務進行匹配,所以如果服務器上的事務失敗並且需要回滾,燼數據事務也失敗了?

[我正在評估Ember.js的即將推出的項目,並測試了一些功能以及開發的樣子。實際上我正在考慮使用socket.io或更高版本實現更新。我看到derby.js已經做出了一些朝向自動衝突解決方案的動作]

回答

0

正如您在Ember數據源代碼here中看到的,您可以返回422狀態代碼,並將錯誤作爲字典返回。 Ember數據庫中的錯誤將作爲模型屬性添加到模型中,模型本身將被視爲無效。一旦每個屬性發生錯誤,模型會自動離開這個狀態。

一旦出現併發性錯誤,您可以在版本屬性和reloadRecord上觀察錯誤。