Ember Data - 保存记录后更新关系的正确方法是什么?

时间:2013-09-03 08:44:12

标签: ember.js ember-data

我正在使用Ember Data 1.0 beta。

我的模型定义如下:

App.Artist = DS.Model.extend({
  first_name: DS.attr('string'),
  last_name: DS.attr('string'),
  practices: DS.hasMany('practice')
});

当我在api / artists上获取模型时,我得到一个集合,每个艺术家的有效负载包含一个带有一系列id的'practices'属性:

{
    "artists": [
        {
            "id": 2,
            "first_name": "An",
            "last_name": "Artist",
            "practices": [
                1,
                2
            ]
        },
    ]
}

到目前为止一切顺利。 Ember魔术发生,我可以访问“App.Artist”实例上的“practice”属性没问题。

现在,当我创建一个艺术家时,服务器返回以下有效负载:

{
    "artist": {
        "id": 38,
        "first_name": "New",
        "last_name": "Artist",
        "practices": [
            4
        ]
    }
}

使用新ID更新模型。但是,当我去访问“实践”时,我得到原始数组值,而不是我期望的相关模型实例。

因此,在创建了一个包含关系的记录之后,我是否必须手动将相关对象添加回实例?或者我可以触发模型重新同步它的关系吗?

提前感谢任何见解!

更新

由于在保存操作完成后模型未反序列化,似乎关系丢失了。模型可以推回到商店,这将导致数据反序列化。

因此,根据上面的代码,如果我有一个App.Artist实例为artist,那么

artist.get('store').push('artist', artist.get('data')); 

将导致关系可用。但是,我还不确定这是否“正确”。

1 个答案:

答案 0 :(得分:1)

这确实是一个错误,正处于修复过程中。执行提交后,应自动维护关系。

https://github.com/emberjs/data/issues/1214