私はドキュメントを何度も読んできましたが、この側面はまだ明確ではありません。backbone-relational がしないことを行うと私が考えている可能性は十分にあります。
キーに基づいてリレーションシップを定義する方法を探して、定型的なフェッチのナンセンスをすべて回避します。
標準的なアーティストとアルバムの例を見てみましょう: アーティストには、album.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に基づいてアルバムのコレクションを取得して返しますか? まだ試していないキー/キーソース/キーデスティネーションの順列であるか、バックボーンリレーショナルが解決しようとしていない問題であるに違いありませんが、私のドキュメントの理解は失敗し、これに対する簡潔な答えだと思います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 で自己隣接リスト スタイルを参照するサンプル モデルを指します。