【发布时间】:2016-01-19 22:06:43
【问题描述】:
如果未找到请求的资源,我有一个后端将在 PUT 请求上创建一个新资源。即...
向
/api/v1/person/1/发出PUT请求出于某种原因,ID 为 1 的其他人已从服务器中删除
服务器创建 id 为 2 的新人员记录
现在就我而言,这些请求是从 Ember 应用程序触发的。当我尝试用 id 1 更新 Ember 商店中的一个人并在服务器上删除它时,我得到 - An adapter cannot assign a new id to a record that already has an id.
服务器返回了一个 ID 为 2 的新人员记录,并且 Ember 错误尝试将其应用到它在其存储中的 ID 为 1 的模型。
到目前为止,我正在重写 DS.Store 的 updateId 方法:
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);
},
};
但这感觉不对。此覆盖是否有任何负面影响?或者有没有其他方法可以解决这个问题?
【问题讨论】:
标签: api rest ember.js ember-data