我在理解Backbone-Relational 的文档时花了很长时间;目前还不是 100% 清楚要添加什么关系,例如includeInJSON
. 最好通过说明我正在尝试创建的结构来描述我的困惑。我有一个Venue
具有零个或多个嵌套Address
模型(1:n 关系)的模型。后端存储是 MongoDB,它可以嵌入对象。我想以这种格式存储它:
{
id: 12345,
label: 'OPUS Cafe Bistro',
addresses: [
{
type: 'mailing',
address1: '#52 - 650 Duncan Ave',
city: 'Penticton, BC'
},
{
type: 'main',
address1: '#106 - 1475 Fairview Rd',
city: 'Penticton, BC'
}
]
}
(请忽略丑陋的数据结构;为简洁起见,我对其进行了调整。)现在我相信我建立了和之间的关系Venue
,Address
因此:
var Venue = Backbone.RelationalModel.extend({
relations: [
{
type: Backbone.HasMany,
key: 'addresses',
relatedModel: 'Address',
includeInJSON: false,
collectionType: 'Addresses',
reverseRelation: {
key: 'venue'
}
}
});
如果我理解正确,我设置includeInJSON
为 false 以防止Venue
被序列化到venue
key in 中Address
,但在 reverseRelation 下我includeInJSON
留空以便将完整(没有场地属性)序列化为-属性中Address
的数组正如我所希望的,例如。正确的?addresses
Venue
出于同样的原因,我试图理解与加入式关系相关的相同概念。考虑Venue
现在有一个organisationID
字段:
/* venue in JSON format */
{
id: 12345,
organisationID: 336,
label: 'OPUS Cafe Bistro',
addresses: []
}
/* and now for the organisation */
{
id: 336,
label: 'OPUS Entertainment Group'
}
使用文档中的示例,似乎更喜欢这种Backbone.HasMany
关系,我认为我必须这样设置Organisation
:
var Organisation = Backbone.RelationalModel.extend({
relations: [
{
type: Backbone:HasMany,
key: 'venues',
relatedModel: 'Venue',
includeInJSON: Backbone.Model.prototype.idAttribute,
collectionType: 'Venues',
reverseRelation: {
key: 'organisationID',
includeInJSON: false
}
}
]
});
...应该序列化到上面的例子中,对吧?(即,Venue
抓取Organisation
'sid
并将其插入organisationID
,并且Organisation
不序列化任何列表Venues
)
在此先感谢您的帮助——期待使用这个方便的库,在为 Backbone.js 编写我自己的关系胶水之后,我的眼球被抓了出来 :-)