Я несколько раз просматривал документы, но этот аспект до сих пор мне не ясен. Вполне возможно, что я думаю, что backbone-relational делает что-то, чего на самом деле нет.
Я ищу способ определить отношения на основе ключа, чтобы избежать всей этой ерунды.
Возьмем канонический пример «Исполнители и альбомы»: у исполнителя много альбомов, как определено в альбоме.artist_id.
/api/artist/62351 может вернуться
{
id: 62351,
name:"Jimi Hendrix"
}
аналогично /api/album?artist_id=62351 может вернуться
[
{
id:5678,
name: "Are You Experienced?"
artist_id: 62351
},
{
id: 4321,
name: "Axis: Bold as love",
artist_id: 62351
}
]
Как я могу определить отношения «Исполнитель» и «Альбом» так, чтобы
var hendrixInstance = new Artist({id:62351});
hendrixInstance.get('albums');
будет извлекать и возвращать коллекцию альбомов на основе альбома foreign_key artist_id? Это должно быть просто какая-то перестановка key/keySource/keyDestination, которую я еще не пробовал, или это проблема, которую магистрально-реляционная не пытается решить, но мой поиск документа не удался, и я думаю, что краткий ответ на это на SO может помочь будущим сотрудникам Google.
var Artist = Backbone.RelationalModel.extend({
urlRoot: '/api/artist',
relations:[{
key: 'albums', //Docs say this is the foreign key name, but in practice it doesn't appear that way. Need keySource/Destination?
type: Backbone.HasMany,
reverseRelation: {
key: 'artist',
type: Backbone.HasOne
}
}]
});
var Album = Backbone.RelationalModel.extend({
urlRoot: '/api/album'
});
Бонус указывает на пример модели, которая ссылается на свой стиль списка смежности с parent_id.