バックボーン モデルでカスタム idAttribute を定義すると、findOrCreate は機能しません。
Uncaught Error: Cannot instantiate more than one Backbone.RelationalModel
with the same id per type!
これは TypeScript の問題だと思います。関係あるか分かりませんが、TypeScriptでクラスを作成し、idAttributeを以下のように設定すると、オブジェクト自体に明示的な「idAttribute」プロパティがあることが分かります。 JavaScript;
module Application.Models {
export class Zoo extends Backbone.RelationalModel {
constructor(options?) {
this.relations = [{
type: Backbone.HasMany,
key: 'animals',
relatedModel: 'Application.Models.Animal',
collectionType: 'Application.Models.AnimalCollection',
reverseRelation: {
key: 'livesIn',
includeInJSON: 'id'
}
}];
super(options);
}
}
export class Animal extends Backbone.RelationalModel {
constructor(options?) {
this.idAttribute = "AnimalId";
super(options);
}
}
export class AnimalCollection extends Backbone.Collection {
constructor(options?) {
super(options);
this.model = 'Application.Models.Animal';
}
}
}
var artis = new Application.Models.Zoo({ name: 'Artis' });
var lion = new Application.Models.Animal({ AnimalId: 123, species: 'Lion', livesIn: artis });
Application.Models.Animal.findOrCreate({ AnimalId: 123 }); // FIRST TIME FINE
Application.Models.Animal.findOrCreate({ AnimalId: 123 }); // SECOND TIME - NOT FINE