Ember.js数据冲突解决 / 冲突失败

4

如果在使用 Ember.js 和 ember-data REST 适配器时,是否有一些冲突解决策略来处理将数据持久化到服务器的问题?

至少对于我的情况,在冲突的情况下失败并回滚就足够了,如果可以通知用户这一点就更好了。那么,需要什么样的数据/结构呢?某种“版本”ID在模型上,其中服务器可以检查提交的版本,并确保客户端拥有最新数据。在 Ember.js 中是否有任何东西可以使这个过程更加自动化?如果有,是什么?

编辑:还有什么可以帮助处理批量提交模型的冲突吗?比如说,我们有一个父模型,它与几个子模型之间存在“hasMany”关系,并且它们都要同时持久化到数据库中。如果只涉及服务器端代码,我觉得我可以在使用的任何数据库中使用事务将其封装起来,如果有什么过期的数据就会失败。这如何转换为 Ember.js 的事务?

我看到 Adapter 类中有一个 bulkCommit 标志。这似乎可以在一个请求中批量提交相同类型的对象。但是,如果我要持久化多个类型的记录,那么这将导致向服务器发送多个请求。是否有一种方法可以将其合并为一个请求发送给服务器,或者匹配 ember-data 的事务和服务器上的事务,因此如果服务器上的事务失败并需要回滚,则 ember-data 事务也会失败?

[我正在评估 Ember.js 用于即将到来的项目,并测试一些功能以及开发体验。我实际上正在考虑使用 socket.io 或类似技术进行更实时的更新。我看到 derby.js 已经迈出了一些自动冲突解决方面的步伐]

1个回答

0

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

您可以监视版本属性上的错误,并在出现并发错误时reloadRecord


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接