Магистральная реляционная — не может создавать более одного экземпляра ,,,

Я использую реляционную основу (https://github.com/PaulUithol/Backbone-relational ) для создания моего приложения, потому что у меня есть модель (комната) с множеством других моделей:

  • В номере много комментариев
  • Комната принадлежит Location

Как вы можете видеть в этой проблеме, я продолжаю получать сообщение об ошибке

Error: Cannot instantiate more than one Backbone.RelationalModel with the same id per type

Всякий раз, когда я меняю представление или перезагружаю коллекцию.

Теперь я знаю, что есть поток здесь, где они предлагают использовать findOrCreate, но Я не обращаюсь к моделям по отдельности, вместо этого я использую Collection.fetch. Есть ли способ обойти эту проблему?


person GTF    schedule 21.09.2012    source источник
comment
У меня была эта проблема ... Я не знаю, почему, но я удалил обратное отношение, и проблема решена на данный момент ...   -  person Edgar Nadal    schedule 11.01.2013
comment
Ах. Я не настраивал обратные отношения...   -  person GTF    schedule 12.01.2013
comment
Взгляните на это: stackoverflow.com/questions/12224122/   -  person macool    schedule 06.06.2013


Ответы (3)


с опорно-реляционной вы можете получить или создать объект из реляционного хранилища. Используйте это для создания реляционных объектов:

this.model = someModel.findOrCreate({id: 123})

При этом он создаст новый объект или получит существующий из реляционного хранилища.

http://backbonerelational.org/#RelationalModel-findOrCreate

person zzz    schedule 04.07.2013
comment
Это сработает, но модели извлекаются динамически из коллекций. - person GTF; 05.07.2013

У меня была аналогичная проблема, исправил ее переключением на Backbone-ассоциации.

https://github.com/dhruvaray/backbone-associations

Интерфейс почти точно такой же, за исключением нескольких незначительных отличий, поэтому перенос должен быть довольно простым.

person Marc Greenstock    schedule 10.06.2013

У меня была аналогичная проблема, и случилось так, что мне нужно инициализировать модель с помощью функции:

model: ->

   return new Project.Models.ModelName()

Когда вам требуется_дерево. в application.js файлы модели загружаются позже, чем файлы коллекции (в алфавитном порядке). Модель установки с функцией ожидает выполнения приложения.

person mingle    schedule 17.01.2013
comment
Я не совсем понимаю, что вы имеете в виду... Вы имеете в виду, что перед использованием Collection.fetch() я должен сначала создать экземпляр модели? - person GTF; 18.01.2013