如果POST响应仅包含一个ID,如何将数据保存到Ember存储中?

詹·加西亚(Jen Garcia)

Ember数据希望我的服务器在每次成功之后都返回完整的对象POST但是,我的API仅返回一种包含的元对象id当Ember收到此对象时,记录中的现有数据将被删除,除了id

因此,例如,当我这样做时:

var asset = App.Asset.store.createRecord('asset',{name: 'foo.ai',
    paths: ['/path/foo.ai', '/another/path/foo.ai'],
    type: 'ai',
    hash: '1234567890123456789012345678901234567890',
    datecreated: 'Sun, 12 Jan 2014 06:01:48 GMT',
    datemodified: 'Sun, 12 Jan 2014 06:01:48 GMT',
    thumbnail: '/path/to/thumb.jpg'
});

asset.save();

...服务器响应,如下所示:

{
    status: "OK",
    updated: "Mon, 13 Jan 2014 19:49:14 GMT",
    id: "52d4433a8e3b08444740ea47",
}

当Ember收到此消息时,它将id使用服务器响应中收到的记录来更新记录的,但由于未包含在响应中,因此它也会删除所有其他数据。如果我在Ember帮助器中检查数据,则如下所示:

{   
    id: '52d4433a8e3b08444740ea47'
    name: undefined,
    paths: undefined,
    type: undefined,
    hash: undefined,
    datecreated: undefined,
    datemodified: undefined,
    thumbnail: undefined
}

如何覆盖此行为并让Ember停止删除我的数据?

我看了看:

  • 挂钩到createRecordDS.RESTAdapter,但它返回一个承诺,所以我不能提取新的id呢。
  • 挂钩到extractSaveDS.RESTSerializer,但它预计storetypepayload作为输入,而不是个人record如果记录传递到这里,我可以id用有效载荷中的内容更新它并解决我的问题。

有什么我想念的吗?

bmac

看起来记录中的现有数据正在记录的adapterDidCommit方法中被覆盖

参见https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/model.js#L656-L657

一种解决方案是扩展该方法以保留记录中的现有数据。我相信它可能看起来像这样。

DS.Model.reopen({
  adapterDidCommit: function() {
    var oldData = this.toJSON();
    this._super.apply(this, arguments); // calls the original adapterDidCommit method
    var newData = this._data;
    this._data = Ember.merge(oldData, newData);
  }
});

这段代码可能并不理想,因为它修改了DS.Model该类,但是我没有看到扩展适配器或序列化器类以实现类似结果的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将 SelectList 中的 ID 保存到另一个表的字段?

来自分类Dev

如何将一个实体保存到另一个实体核心数据中

来自分类Dev

如何将一个实体保存到另一个实体核心数据中

来自分类Dev

如何将保存到文件的数据与保存到另一个文件的其他数据绑定

来自分类Dev

Django:如何通过一个POST请求将数据保存到两个模型(表)中?

来自分类Dev

如何将api数据保存到本地存储中?

来自分类Dev

如何将聚合结果保存到另一个数据库中。[Mongodb]

来自分类Dev

如何将ID从一个表保存到ASP.NET MVC中的另一个表?

来自分类Dev

如何将以引导方式输入的数据保存到另一个模型中

来自分类Dev

如何将字典保存到键值为每行一个文件的文件中?

来自分类Dev

如何将参考值保存到NetSuite中的另一个记录

来自分类Dev

如何将参考值保存到NetSuite中的另一个记录

来自分类Dev

如何将多个摘要(lm)保存到一个文件中?

来自分类Dev

如何将包含另一个对象向量的对象保存到文件中,并使用C ++中的二进制文件从文件中读取?

来自分类Dev

我有一个简单的用角度制作的应用程序,如何将推送到数组的项目保存到本地存储中?

来自分类Dev

如何将抓取的数据正确存储在 item 对象中并将每个集合保存到 1 个 csv 文件?

来自分类Dev

如何将脚本中的文本保存到Linux中另一个脚本中的变量?

来自分类Dev

如何将TIMESTAMP转换为VARCHAR并将其保存到Redshift中的另一个表中?

来自分类Dev

如何将文件保存在一个远程存储库中而不是另一个

来自分类Dev

如何将 foreach 循环数据存储到另一个模型中?

来自分类Dev

如何将坐标列表保存到隔离存储中?

来自分类Dev

如何将一个文件的模式搜索到另一个文件中,并将每个模式的结果保存到新文件中

来自分类Dev

如何将表单数据保存到2个数据表中?

来自分类Dev

如何将Joblib转储保存到另一个文件夹?

来自分类Dev

如何将一个空的TextFormField保存到Firebase?

来自分类Dev

如何将最后一个命令保存到文件?

来自分类Dev

如何将指向基类的指针保存到另一个类的字段?

来自分类Dev

如何将矩阵从for循环保存到另一个矩阵

来自分类Dev

如何仅使用一个键-值将对象列表保存到Redis中?

Related 相关文章

  1. 1

    如何将 SelectList 中的 ID 保存到另一个表的字段?

  2. 2

    如何将一个实体保存到另一个实体核心数据中

  3. 3

    如何将一个实体保存到另一个实体核心数据中

  4. 4

    如何将保存到文件的数据与保存到另一个文件的其他数据绑定

  5. 5

    Django:如何通过一个POST请求将数据保存到两个模型(表)中?

  6. 6

    如何将api数据保存到本地存储中?

  7. 7

    如何将聚合结果保存到另一个数据库中。[Mongodb]

  8. 8

    如何将ID从一个表保存到ASP.NET MVC中的另一个表?

  9. 9

    如何将以引导方式输入的数据保存到另一个模型中

  10. 10

    如何将字典保存到键值为每行一个文件的文件中?

  11. 11

    如何将参考值保存到NetSuite中的另一个记录

  12. 12

    如何将参考值保存到NetSuite中的另一个记录

  13. 13

    如何将多个摘要(lm)保存到一个文件中?

  14. 14

    如何将包含另一个对象向量的对象保存到文件中,并使用C ++中的二进制文件从文件中读取?

  15. 15

    我有一个简单的用角度制作的应用程序,如何将推送到数组的项目保存到本地存储中?

  16. 16

    如何将抓取的数据正确存储在 item 对象中并将每个集合保存到 1 个 csv 文件?

  17. 17

    如何将脚本中的文本保存到Linux中另一个脚本中的变量?

  18. 18

    如何将TIMESTAMP转换为VARCHAR并将其保存到Redshift中的另一个表中?

  19. 19

    如何将文件保存在一个远程存储库中而不是另一个

  20. 20

    如何将 foreach 循环数据存储到另一个模型中?

  21. 21

    如何将坐标列表保存到隔离存储中?

  22. 22

    如何将一个文件的模式搜索到另一个文件中,并将每个模式的结果保存到新文件中

  23. 23

    如何将表单数据保存到2个数据表中?

  24. 24

    如何将Joblib转储保存到另一个文件夹?

  25. 25

    如何将一个空的TextFormField保存到Firebase?

  26. 26

    如何将最后一个命令保存到文件?

  27. 27

    如何将指向基类的指针保存到另一个类的字段?

  28. 28

    如何将矩阵从for循环保存到另一个矩阵

  29. 29

    如何仅使用一个键-值将对象列表保存到Redis中?

热门标签

归档