4

如果将 Ember.js 与 ember-data REST 适配器一起使用,是否有某种冲突解决策略来处理持久化到服务器的数据?

至少,就我而言,如果可以通知用户,在发生冲突的情况下失败和回滚就足够了。那么,这需要某种数据/结构吗?模型上的某种“版本”ID,服务器可以在其中检查提交的版本,并确保客户端具有最新数据。Ember.js 中有什么东西可以减少手动操作吗?如果是这样,是什么?

编辑:另外,有什么可以帮助解决模型批量提交的冲突吗?假设我们有一个与多个子​​模型具有“hasMany”关系的父模型,并且它们都将同时持久化到数据库中。如果只是处理服务器端代码,我觉得我可以将它包装在我正在使用的任何数据库中的事务中,如果某些东西过时则失败。这如何转化为 Ember.js 事务?

我在 Adapter 类中看到了一个标志 bulkCommit。这似乎能够在一个请求中批量提交相同类型的对象。但是,如果我要保存一种以上类型的记录,那么这将导致对服务器的多个请求。有没有办法a)在对服务器的一个请求中实现这一点,或者b)将ember-data的事务与服务器上的事务匹配,所以如果服务器上的事务失败,需要回滚, ember-data 交易也失败了?

[我正在为即将到来的项目评估 Ember.js,并测试一些功能以及开发它的感觉。我实际上正在考虑使用 socket.io 或类似的更多实时更新。我看到 derby.js 已经朝着自动解决冲突做出了一些努力]

4

1 回答 1

0

正如您在此处的 Ember Data 源代码中看到的那样,您可以将带有错误的 422 HTTP 状态代码作为字典返回。Ember 数据库会将错误作为模型的属性按键添加到模型中,并且模型本身将被视为无效。一旦每个带有错误的属性发生更改,模型将自动离开此状态。

您可以观察版本属性上的错误,reloadRecord一旦出现并发错误。

于 2013-04-20T11:59:35.437 回答