У меня есть бэкэнд, который создаст новый ресурс по запросу PUT
, если запрошенный ресурс не найден. IE ..Ember - Обновление записи ember с новым идентификатором по запросу PUT
PUT
Сделать запрос/api/v1/person/1/
По одной причине или другому лицу с идентификатором 1 был удален с сервера
Сервер создает новый человек запись с идентификатором 2
Теперь в моем случае эти запросы запускаются из приложения Ember. Когда я пытаюсь обновить человека в хранилище Ember с идентификатором 1, и он удаляется на сервере, я получаю: An adapter cannot assign a new id to a record that already has an id.
Сервер вернул новую запись человека с ошибками id 2 и Ember, пытающимися применить ее к модель имеет в это хранилище с идентификатором 1.
до сих пор я переопределение метода updateId
из DS.Store
:
export default DS.Store.extend({
updateId: function(record, data) {
var oldId = Ember.get(record, 'id');
var id = coerceId(data.id);
if (oldId && oldId !== id) {
this.typeMapFor(record.constructor).idToRecord[oldId] = record;
} else {
this.typeMapFor(record.constructor).idToRecord[id] = record;
}
Ember.set(record, 'id', id);
},
};
Но это только кажется неправильным. Есть ли какие-либо негативные последствия для этого переопределения? Или есть ли другой способ обойти это?