【问题标题】:Ember - Updating ember record with new ID on PUT requestEmber - 在 PUT 请求中使用新 ID 更新 ember 记录
【发布时间】:2016-01-19 22:06:43
【问题描述】:

如果未找到请求的资源,我有一个后端将在 PUT 请求上创建一个新资源。即...

  1. /api/v1/person/1/发出PUT请求

  2. 出于某种原因,ID 为 1 的其他人已从服务器中删除

  3. 服务器创建 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.StoreupdateId 方法:

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


    【解决方案1】:

    我会尝试看看unloadRecord。 发出PUT 请求。如果由于此错误而失败,请卸载记录并重新获取并重试PUT

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多