Ember.js 余烬数据批量保存到服务器

Ember.js 余烬数据批量保存到服务器,ember.js,save,batch-updates,Ember.js,Save,Batch Updates,余烬数据在版本之间快速移动,保存数据的方法也随之改变。现在,对于版本1.0.0-beta.8.2a68c63a,正确的方法是更新一条记录,然后执行record.save()以触发一个返回服务器的PUT请求。使用我当前的应用程序,我一次更新多个记录,这可能需要50多个将ajax请求放回服务器。我们关注性能和效率问题,还没有找到任何用于执行批处理请求的文档。如果说有什么不同的话,我们已经在网上找到了很多其他人,他们希望做同样的事情,但还没有找到一个好的解决方案 现在,我正在研究手动序列化这些对象并将

余烬数据在版本之间快速移动,保存数据的方法也随之改变。现在,对于版本1.0.0-beta.8.2a68c63a,正确的方法是更新一条记录,然后执行record.save()以触发一个返回服务器的PUT请求。使用我当前的应用程序,我一次更新多个记录,这可能需要50多个将ajax请求放回服务器。我们关注性能和效率问题,还没有找到任何用于执行批处理请求的文档。如果说有什么不同的话,我们已经在网上找到了很多其他人,他们希望做同样的事情,但还没有找到一个好的解决方案


现在,我正在研究手动序列化这些对象并将它们保存回服务器,我认为这是余烬数据的全部要点。因此,也许我最感兴趣的是根本不使用余烬数据,手动编写CRUD请求代码,创建自己的数据层来处理所有这些,只需使用ArrayController和ObjectController将数据保存在Handlebar模板中并绑定到这些模板。这样做的好处似乎是,它将按照我需要的方式工作(批处理请求),并且代码不会与未来版本的余烬数据中断。有什么想法或解决方案吗?

您可以使用
DS.EmbeddedRecordsMixin
来实现。如果您的页面对象有许多块(例如,基于您的评论),那么
Page serializer.js
将如下所示:

import DS from 'ember-data';

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
  attrs: {
    blocks: { serialize: 'records' }
  }
});
无论何时保存页面记录,其所有关联的块记录都将包含在该PUT请求中


请参阅文档。

如果您谈论的是多个资源类型,并且多个更新击中了同一个端点,那么我完全不使用余烬数据。是的,这涉及到在页面上重新排列块列表,然后保存回它们的位置,这意味着更新所有块。因此,当你移动一个命令时,它们都会移动,每次可能有50到100个命令返回到服务器。看起来余烬数据还没有准备好。当然没有,你最好自己动手实现,它不应该太重。这就是我想的。事情就是这样。我有一个类似的用例,最后不得不推出自己的。现在可能就是这种情况,但我已经停止使用Ember,因为它变得太大、太复杂,无法使用。我觉得差不多又是Sproutcore了。不用担心。我想其他人可能会遇到这个。