2013-03-14 56 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上观察错误。