backbone.relational - key,keySource,keyDestination

时间:2012-07-05 06:10:58

标签: javascript backbone.js backbone-relational

我有以下两种模式:UserJob 每个user只能有一份工作 user.attributesjob.attributes看起来像这些(1):

(1)

user.attributes = {
    id: 1,
    name: 'barName',
    job_id: 5
}

job.attributes = {
    id: 5,
    name: 'fooJob'
}

假设我想在这两个模型之间建立关系: 外键应为job_id

(2)

User = Backbone.ModelRelation.extend({
    relations: [
        {
            type: Backbone.HasOne,
            key: 'job_id',
            keyDestination: 'job',
            relatedModel: User
        }
    ]
});

使用代码(2),结果将是:

(3)

user.attributes = {
    id: 1,
    name: 'barName',
    job: job.attributes
}

正如您所见,job_id中的user.attributes丢失了 因此,如果我向服务器发出PUT请求,服务器会抱怨缺少job_id属性 任何想法如何修复(3)以便将job_id保存在user.attributes中,如(4)?

(4)

user.attributes = {
    id: 1,
    name: 'barName',
    job_id: 5
    job: job.attributes
}

参考:
Paul Uithol - Backbone-relational

1 个答案:

答案 0 :(得分:0)

我的解决方法是更改​​服务器读取JSON的方式。

因此服务器会读取{user:{job:{id:1}}}而不是{user:{job_id:1}}

请注意,我们包含一个具有id属性的子对象,而不是使用job_id flat属性。

取决于可以配置哪个服务器端框架。