如何更新ember-data中的关系

How to update relationships in ember-data

本文关键字:ember-data 关系 更新 何更新      更新时间:2023-09-26

我有以下两个模型:

App.Domain = DS.Model.extend({
    name: attr('string'),
    users: DS.hasMany('App.User')
});
App.User = DS.Model.extend({
    user: attr('string'),
    domain: DS.belongsTo('App.Domain')
});

Domain被加载到嵌入的User记录中:

DS.RESTAdapter.map('App.User', {
    domain: { embedded: 'load' }
});

如果我得到JSON数据,ember-data将正确解释它。

GET /users
{
    "users": [
        {
            "id": 1,
            "domain_id": 1,
            "user": "test",
            "domain": {
                "id": 1,
                "name": "example.com"
            }
        }
    ]
}

我的域名是这样的:

GET /domains
{
    "domains": [
        {
            "id": 1,
            "name": "example.com"
        },
        {
            "id": 2,
            "name": "example.org"
        }
    ]
}

现在我的问题是:

如果我更新user记录中的domain, domain_id的foreignKey将不会更新。如果我尝试提交这个脏记录,ember会将旧的domain_id发送到服务器。我的代码有什么问题?我可以不更新belongsTo字段来更新foreignKey吗?

>>var user = App.User.find(1);
>>user.get('domain.id')
1
>>var newDomain = App.Domain.find(2);
>>newDomain.get('id')
2
>>user.set('domain', newDomain)
>>user.get('isDirty')
true
>>user.get('domain.id')
2
>>user.get('domain_id')
1

我认为你需要首先提交domain_id更新