Как представить отношения UML с помощью Backbone-Relational?

У меня есть диаграмма классов, выглядящая так:

ModelA 1------* ModelB 1------* ModelC 1------* ModelD

Изменить:

Данные выглядят так

Данные:

{   "Titel" : "ModelA",
    "ModelA" : [
        {
          "Titel" : "ModelB1",
          "ModelB1" : [
                              {
              "Titel" : "ModelC1",
                              "ModelC1":[
                                { "Titel" : "ModelD1"   },
                                { "Titel" : "ModelD2"   },
                                { "Titel" : "ModelD3"   }
                              },
                              {
              "Titel" : "ModelC2",
                              "ModelC2":[
                                { "Titel" : "ModelD21"   },
                                { "Titel" : "ModelD22"   },
                                { "Titel" : "ModelD23"   }
                              },
                              ]
                 },
                 {
          "Titel" : "ModelB2",
          "ModelB2" : [
                              {
              "Titel" : "ModelC1",
                              "ModelC1":[
                                { "Titel" : "ModelD1"   },
                                { "Titel" : "ModelD2"   },
                                { "Titel" : "ModelD3"   }
                              },
                              {
              "Titel" : "ModelC2",
                              "ModelC2":[
                                { "Titel" : "ModelD21"   },
                                { "Titel" : "ModelD22"   },
                                { "Titel" : "ModelD23"   }
                              },
                              ]
                 }]
 }

Я создаю эти RelationalModel:

Модель А:

ModelA = Backbone.RelationalModel.extend({

  relations:[{
    type: Backbone.HasMany,
    key: 'modelb',
    relatedModel: 'ModelB',
    collectionType: 'ModelBCollection',
    reverseRelation:{
      key: 'belong To',
      includeInJSON: 'id'
    }
  }] });

Модель Б:

ModelB = Backbone.RelationalModel.extend({

  relations:[{
    type: Backbone.HasMany,
    key: 'modelc',
    relatedModel: 'ModelC',
    collectionType: 'ModelCCollection',
    reverseRelation:{
      key: 'belong To',
      includeInJSON: 'id'
    }
  }] });

МодельC:

ModelC = Backbone.RelationalModel.extend({

  relations:[{
    type: Backbone.HasMany,
    key: 'modeld',
    relatedModel: 'ModelD',
    collectionType: 'ModelDCollection',
    reverseRelation:{
      key: 'belong To',
      includeInJSON: 'id'
    }
  }] });

МодельD:

ModelD = Backbone.Model.extend({ });

Подборки:

 ModelACollection = Backbone.Collection.extend({ model: ModelA });
 ModelBCollection = Backbone.Collection.extend({ model: ModelB });
 ModelCCollection = Backbone.Collection.extend({ model: ModelC });
 ModelDCollection = Backbone.Collection.extend({ model: ModelD });

и я делаю это в маршрутизаторе:

Маршрутизатор:

var obja = new ModelACollection(data);
var objb = new ModelBCollection(data.objb);
var objc = new ModelCCollection(data.objc);
var objd = new ModelDCollection(data.objd);

все извлекаются, но со многими предупреждениями (firefox, chrome) выглядят так:

Предупреждение:

Relation=%o; no model, key or relatedModel (%o, %o, %o) .... 
  1. В чем смысл этого предупреждения?
  2. Вот правильно ли представлять это Class Relation с помощью Backbone-relational не?

если не?

Как я могу представить это как реляционную модель Backbone?


person 3logy    schedule 10.02.2012    source источник
comment
Привет, мистер Смит! я отредактировал свой пост и добавил некоторые данные! Спасибо!   -  person 3logy    schedule 11.02.2012


Ответы (1)


В модели А вы определяете

key: 'modelb'

который ссылается на модель B. Однако ключ должен быть «строкой. Ссылается на имя атрибута в relatedModel» (на основе документов). И я не вижу поле модели с именем modelb

person schacki    schedule 13.08.2012
comment
Это вопрос или ответ? - person 3logy; 15.08.2012
comment
Если вы указали свой полный код модели в вопросе, то это ответ: вам нужно поле с именем modelb, если вы хотите ссылаться на него с помощью ключа. Если modelb не существует, как должен работать поиск? Возможно, ключ должен быть просто «id». - person schacki; 15.08.2012
comment
вы можете отредактировать свой пост с визуальным ответом (пример)? Спасибо! - person 3logy; 15.08.2012