当我尝试使用ember存储数据时,我似乎遇到了一个反复出现的问题。
当我清除我的localforge(Chrome开发工具->选项卡应用程序)并重新加载我的应用程序时,我创建了一系列对API的请求,并使用这些API调用的结果创建并存储在我的localstorage中。
通常,在我清空存储后,我会收到以下警告:
Ember Data期望在适配器响应中找到具有以下ID的记录,但它们丢失了:[1,2]
之后,我得到一个错误
断言失败:id 1已与modelClass的另一条记录一起使用ocularium-frontend@model:应用程序设置:
这应该永远不会发生,因为我已经清理了存储并进行了刷新。他发现了存在但实际上不存在的数据。
有没有办法解决这个问题并实际保存数据?我试着把它抓起来,然后再把它存起来。尝试"更新"并再次存储,但没有成功
通常,我会得到一个带有有效JSON的API响应。Ember然后使用下面这样的模型,将其保存到商店中。该模型与商店类型同名,在本例中为"应用程序设置">
import DS from 'ember-data';
export default DS.Model.extend({ name: DS.attr() });
然后为了保存它,我使用了这段代码,其中"storeKey.type"="应用程序设置",data=新数据。
this.store.createRecord(request.storeKey.type,data).save();
我似乎找到了解决方案。在应用程序选项卡中清除"keyvaluepairs"时,您只在那里清除它,但它仍在成员数据中。当刷新时,它在那里,但不在当地的饲料中。
因此,我把商店里的每一把钥匙都翻了一遍,然后把它卸了下来。
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');
});
如果随后调用函数将其保存到存储中,则不会收到以上警告和错误。