Проблема с обновлением магазина Ember! Ошибка: не удалось ответить на событие didChangeData в состоянии rootState.loaded.updated.uncommitted

Я пытаюсь загрузить свои данные с помощью отдельного запроса на сервер после того, как записи загрязнятся в хранилище. Обновленные значения отправляются на сервер, и соответствующие действия выполняются с использованием пользовательского вызова ajax и обрабатываются на стороне сервера для обновления всех связанных записей. Но когда данные загружаются снова, я получаю вышеупомянутую ошибку. Возможная причина может заключаться в том, что записи в хранилище грязные, и без фиксации хранилища я пытаюсь снова загрузить данные, что дает мне ошибку. Итак, я попытался выполнить «Application.defaultTransaction.rollback()». Он удаляет эти записи из обновленной корзины, но «ключ» в обновленной корзине (тип объекта) все еще существует, и я все еще получаю сообщение об ошибке. Кто-нибудь может мне с этим помочь?

Вкратце: есть ли способ принудительно очистить хранилище или переместить все объекты из созданных/обновленных/находящихся в процессе сегментов в очистку сегмента?


person inertia    schedule 15.10.2012    source источник
comment
Вы вызывали store.didSaveRecord(), когда сервер отвечал? Я думаю, что работа, выполняемая DS.(REST)Adapter, должна выполняться и в вашем случае.   -  person sly7_7    schedule 16.10.2012
comment
Это не проблема. У меня настроены параллельные вызовы API, и я не использую запросы на размещение/публикацию хранилища данных по умолчанию. Мне пришлось в основном сделать store.get('defaultTransaction').rollback(), который я пробовал ранее, но, вероятно, не в том месте. В любом случае вопрос решен. Спасибо   -  person inertia    schedule 19.10.2012
comment
Я так понял, что вы не фиксируете, а публикуете запись вручную. У вас есть два способа перемещения записей в чистом состоянии: либо путем отката, как здесь, либо путем вызова store.didSaveRecord(), передачи записи и нового хэша данных. В вашем случае откат работает нормально, так что +1 :)   -  person sly7_7    schedule 19.10.2012
comment
Мне не удалось найти метод didSaveRecord в ember-data. Какую версию вы имеете в виду?   -  person inertia    schedule 20.10.2012
comment
эээ, в мастере: github .com/emberjs/data/blob/master/packages/ember-data/lib/   -  person sly7_7    schedule 21.10.2012
comment
возможно, я использую более раннюю версию, в которой ее нет. Спасибо :)   -  person inertia    schedule 22.10.2012


Ответы (1)


Application.store.get('defaultTransaction').rollback() удалит все грязные объекты в хранилище и вернет его в исходное состояние. Существует также открытая проблема для store.rollback(), которая может быть альтернативой при слиянии с мастером. https://github.com/emberjs/data/pull/350#issuecomment-9578563

person inertia    schedule 19.10.2012