Backbone-Relationalのドキュメントを理解するのにかなりの時間を費やしています。のようなものを追加する関係が100%明確ではありませんincludeInJSON
。おそらく、私が作成しようとしている構造を説明することによって、私の混乱を説明するのが最善でしょう。Venue
ネストされたモデルが0個以上あるモデルがあります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に設定しますが、reverseRelationでは、 –のプロパティの配列として完全な(会場プロパティなしで)シリアル化するために空白のままにします。私の望み通りに-例えば。正しい?Venue
venue
Address
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用に自分のリレーショナル接着剤を書こうとして私の目をつぶった後:-)