我有以下两种型号:User
和Job
。
每个user
只能有一个作业。user.attributes
和job.attributes
如下所示 (1):
(1)
user.attributes = {
id: 1,
name: 'barName',
job_id: 5
}
job.attributes = {
id: 5,
name: 'fooJob'
}
假设我想在这两个模型之间建立关系:外键应job_id
(二)
User = Backbone.ModelRelation.extend({
relations: [
{
type: Backbone.HasOne,
key: 'job_id',
keyDestination: 'job',
relatedModel: User
}
]
});
使用代码 (2),结果将是:
(三)
user.attributes = {
id: 1,
name: 'barName',
job: job.attributes
}
如您所见,user.attributes
的job_id
丢失了。
因此,如果我向服务器发出 PUT 请求,服务器会抱怨缺少 job_id 属性。
任何想法如何修复 (3) 以便将job_id保留在 user.属性中,例如 (4)?
(四)
user.attributes = {
id: 1,
name: 'barName',
job_id: 5
job: job.attributes
}
参考:
保罗·尤索尔 - 骨干关系
我的解决方法是更改服务器读取 JSON 的方式。
因此,服务器将读取{user:{job:{id:1}}}
而不是{user:{job_id:1}}
请注意,我们包含一个带有 id 属性的子对象,而不是使用 job_id 平面属性。
根据可以配置的服务器端框架。