Backbone-relational не может создать два объекта RelationalModel.

Я пытаюсь реализовать BackboneRelational и продолжаю получать

"Невозможно создать более одного Backbone.RelationalModel с одним и тем же идентификатором для каждого типа!"

class App.Models.User extends Backbone.RelationalModel
  urlRoot : '/api/users'
  idAttribute: 'id'

  relations: [
    type: Backbone.HasMany
    key: 'plots'
    relatedModel: 'App.Models.Plot'
    collectionType: 'App.Collections.Plots'
    includeInJSON: false
    reverseRelation:
      key: 'user_id',
      includeInJSON: 'id'
  ]


class App.Models.Plot extends Backbone.RelationalModel
  urlRoot : '/api/plots'
  idAttribute: 'id'

Если я переключаю одну из моделей на extends Backbone.Model, я могу создать экземпляры обеих, но получаю все предупреждения о том, что реляционная функциональность нарушена.

Я пытаюсь добиться следующего:

 plot = new App.Models.Plot({id : 700})
 plot.fetch()
 plot.get('user')

Что мне не хватает?


person Stpn    schedule 01.09.2012    source источник


Ответы (1)


Общая идея ситуации «одна модель на идентификатор» заключается в том, что Backbone Relational использует хранилище данных (Backbone.Relational.store) для устранения повторяющихся запросов для уже загруженных моделей.

К счастью, он также предоставляет несколько помощников для помощи в доступе модели через магазин. Вместо того, чтобы указывать идентификатор и получать график, вы можете использовать метод findOrCreate, который вы найдете прикрепленным к App.Models.Plot:

plot = App.Models.Plot.findOrCreate(700)
user = plot.get('user')
person rjz    schedule 01.09.2012
comment
Благодарность! Я могу создать экземпляр графика сейчас, но user = plot.get ('user') возвращает undefined. - person Stpn; 01.09.2012
comment
Вы делаете ставку! Проблема взаимоотношений может быть в другом. Ознакомьтесь с coffeescript / setup Q + A по адресу: github.com/PaulUithol/Backbone -relational # вопросы и ответы - person rjz; 01.09.2012
comment
Понятно ... поэтому, прочитав это, я пришел к выводу, что мне просто нужно включить App.Models.User.setup () в качестве последней строки кода модели? Извините, но я не могу понять это из объяснения там .. Я могу сделать plot.fetchRelated ('user_id'), хотя и с исправлением .setup (), но не с get ('user') .. - person Stpn; 01.09.2012