У меня очень много времени на понимание документации для 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
в 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
id
и вставляет его в organisationID
, а Organisation
не сериализует список Venues
)
Заранее благодарен за любую помощь- с нетерпением жду возможности использовать эту удобную библиотеку, после того, как выкручиваю глаза, пытаясь написать свой собственный реляционный клей для Backbone.js: -)