【问题标题】:Ember Data expected to find records with the following ids in the adapter response but they were missingEmber Data 期望在适配器响应中找到具有以下 id 的记录,但它们丢失了
【发布时间】:2017-02-03 13:59:35
【问题描述】:

当我尝试使用 ember 存储数据时,我似乎遇到了一个反复出现的问题。

当我清除我的 localforage(Chrome 开发工具 -> 选项卡应用程序)并重新加载我的应用程序时,我会创建一系列对我的 API 的请求,并使用这些 API 调用的结果创建并将它们存储在我的本地存储中。

通常,在我清除存储空间后,我会收到以下警告:

Ember Data 期望在适配器响应中找到具有以下 id 的记录,但它们丢失了:[1,2]

之后,我得到一个错误

断言失败:id 1 已与另一条记录一起用于 modelClass ocularium-frontend@model:application-settings:

这应该永远不会发生,因为我已经清除了存储空间并进行了刷新。他找到了存在但实际上不存在的数据。

有没有办法解决这个问题并实际保存数据?我试着抓住它并再次储存它。尝试“更新”它并再次存储它,但没有成功。

通常,我会收到包含有效 JSON 的 API 响应。 Ember 然后使用如下所示的模型将其保存到商店。该模型与 store-type 具有相同的名称,在本例中为“application-settings”

import DS from 'ember-data';
export default DS.Model.extend({ name: DS.attr() });

然后为了保存它,我使用此代码,其中 'storeKey.type' = "application-settings" 和 data = 新数据。

this.store.createRecord(request.storeKey.type, data).save();

【问题讨论】:

  • 您需要提供更多信息:您使用什么样的 API,您的响应是什么样的,尝试保存记录时使用的确切代码是什么。
  • 我更新了我的问题,保存它的代码已经写下来了

标签: ember.js ember-data ember-cli


【解决方案1】:

我似乎找到了解决办法。在“应用程序”选项卡中清除“键值对”时,您只能在此处清除它,但它仍在 ember-data 中。刷新时它在“那里”,但不在 localforage 中。

因此,我检查了商店中的每把钥匙并将其卸载。之后我清除了我的本地觅食。

let store = this.get('store');
for (let key in store.typeMaps) {
    store.unloadAll(store.typeMaps[key].type.modelName);
}

window.localforage.clear().then(() => {
    Ember.Logger.log('EMBER-DATA STORAGE CLEARED');
});

如果您随后调用您的函数来保存到商店,您将不会收到上述警告和错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多