2017-02-03 57 views
1

我試圖使用ember存儲數據時似乎有一個反覆出現的問題。Ember數據預計會在適配器響應中找到具有以下ID的記錄,但它們丟失了

當我清除我的localforage(Chrome開發工具 - >選項卡應用程序)並重新加載我的應用程序時,我創建了一系列請求到我的API,並創建這些API調用的結果並將它們存儲在我的localstorage中。

通常情況下,之後我明白我的存儲,我得到以下警告:

灰燼數據有望找到與適配器響應以下ID記錄,但他們失蹤:[1,2]

在那之後,我得到一個錯誤

斷言失敗:id爲1已經被使用另一個記錄modelClass ocularium-前端@模型:應用SETT ings:

這應該永遠不會發生,因爲我已經清理了我的存儲並進行了刷新。他發現那裏有數據但實際上並不存在。

有沒有辦法解決這個問題並實際保存數據?我試圖抓住它並再次儲存。試圖'更新'並再次存儲它,沒有奏效。

通常,我得到一個有效的JSON API響應。然後Ember使用下面的模型將其保存到商店。該模型具有相同的名稱商店類型,在這種情況下,「應用程序設置」

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

然後保存它,我用這個代碼,其中「storeKey.type」 =「應用程序設置」和數據=新數據。

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

+0

您需要提供更多信息:您使用的是什麼類型的API,您的響應是什麼樣的,什麼是您在嘗試保存記錄時使用的確切代碼。 – Senthe

+0

我更新了我的問題,保存它的代碼已經寫下來 – Driezzz

回答

0

我似乎找到了解決方案。在清除應用程序選項卡中的'keyvaluepairs'時,您只能清除它,但它仍然處於餘燼數據中。當刷新它'有',但不在本地飼料。

因此,我運行了存儲中的每個密鑰並將其卸載。之後,我清除我的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'); 
}); 

如果您隨後調用您的函數以保存到商店,則不會超出警告和錯誤。

相關問題