2017-02-03 11 views
1

У меня, похоже, есть повторяющаяся проблема, когда я пытаюсь хранить данные с помощью ember.Ember Данные ожидали найти записи со следующими идентификаторами в ответе адаптера, но они отсутствовали.

Когда я очищаю свой локальный ресурс (приложение Chrome Dev Tools -> Tab) и перезагружаю приложение, я создаю серию запросов к моему API и результаты этих вызовов API, которые я создаю и сохраняю их в своем локальном хранилище.

Oftentimes, сразу после я очистил свое хранилище я получаю следующее предупреждение:

Ember данных, как ожидается, найти записи со следующими идентификаторами в ответ адаптера, но они отсутствовали: [1,2]

После этого я получаю сообщение об ошибке

Assertion Failed: идентификатор-уже использовался с другой записью для modelClass ocularium-интерфейс @ модели: приложение-брусчатка ings:

Этого никогда не должно произойти, так как я очистил свое хранилище и сделал обновление. Он находит данные, которые есть, но на самом деле их нет.

Есть ли способ исправить это и фактически сохранить данные? Я попытался поймать его и снова сохранить. Пытался «обновить» его и сохранить его снова, не сработал.

Обычно я получаю ответ API с действующим JSON. Затем Ember использует модель, как показано ниже, чтобы сохранить ее в магазине. Модель имеет то же имя, что и магазин типа, в данном случае «приложение-настройка»

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

А затем сохранить его я использую этот код, где «storeKey.type» = «приложения-настройка» и данные = новые данные.

это.стор.созданиеRecord (request.storeKey.type, data) .save();

+0

Вам необходимо предоставить дополнительную информацию: какой API вы используете, как выглядит ваш ответ, какой именно код вы используете при попытке сохранить записи. – Senthe

+0

Я обновил свой вопрос, код для его сохранения был уже записан – Driezzz

ответ

0

Кажется, я нашел решение. Когда вы очищаете свои «keyvaluepairs» в вкладке «Приложение», вы очищаете ее только там, но все еще в данных ember. При освежении это «есть», но не в локальном корме.

Поэтому я просматриваю каждую клавишу в своем магазине и выгружаю ее. После этого я очистил свой локальный запас.

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'); 
}); 

Если вы затем вызвать свои функции, чтобы сохранить в магазин, вы не получите выше ошибок и предупреждений.

 Смежные вопросы

  • Нет связанных вопросов^_^