2013-06-11 2 views
0

Я пытаюсь разработать приложение с помощью адаптера Fixture с Ember-Data.Как получить доступ к generateIdForRecord в Ember-Data?

Когда я пытаюсь создать новый объект (на основе модели, которую я определил), это не сработает, если я не укажу идентификатор.

Если я указать идентификатор и сделать это:

var person = SD.Person.createRecord({ 
    id: 234, 
    name: "test" 
}); 

var person.save(); 

я получаю:

Error: assertion failed: An adapter cannot assign a new id to a record that already has an id. had id: 234 and you tried to update it with 234. This likely happened because your server returned data in response to a find or update that had a different id than the one you sent.

Что делает это звучит как-то я обновляю существующую запись (я нет, есть только 2 светильника для объекта Person с идентификаторами 1 и 2 соответственно).

Является ли Ember попыткой сохранить мой объект дважды?

Я думал, что, возможно, мне нужно будет использовать generateIdForRecord, чтобы установить ID, но я не могу ссылаться на эту функцию независимо от того, что я пытаюсь.

newBooking.set('id', this.store.generateIdForRecord(this.store, newBooking)); 
newBooking.set('id', DS.generateIdForRecord(this.store, newBooking)); 
newBooking.set('id', this.generateIdForRecord(this.store, newBooking)); 
newBooking.set('id', generateIdForRecord(this.store, newBooking)); 

TypeError: this.store.generateIdForRecord is not a function

Я использую последние выпуски Эмбер и Эмбер-Data (попробовал предыдущие выпуски тоже). Моя модель не имеет никакого отношения к учебнику TodoMVC в руководствах Ember, и в учебнике ничего не нужно делать, чтобы управлять идентификаторами с адаптером Fixture, поэтому я действительно не знаю, что происходит.

Как создать новый объект Person (как в моем примере, только одно поле «имя» и сохраняется его с помощью адаптера арматуры Ember-Data без вышеуказанных ошибок?

+0

Что такое 'SD' для пространства имен? – intuitivepixel

+0

@in tuitivepixel - я создал свое приложение на SD. Я собирался опубликовать обновление по этому вопросу, но мой первый фрагмент кода фактически работает. По какой-то причине я просто ожидал увидеть это как событие в консоли. В конце концов, объект создавался. – Anonymous

ответ

1

В конце концов, мой первый фрагмент кода работал нормально.

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