У меня есть несколько уникальное обстоятельство, когда я написал слой кэширования для данных ember, которые сериализуют записи в localstorage. Когда я десериализую свой кеш в модели данных ember-data, я использую this.store.createRecord('model_name', cacheData);
. Эти записи, которые я кэшируют, имеют существующие значения на сервере. Это работает для меня хорошо, пока я не хочу записать save()
. Сохранение считает, что запись является новой записью, даже если она имеет атрибут «id». Когда save()
называется POST, делается на мой сервер приложений вместо PUT. Кто-нибудь знает способ помечать записи в магазине как не новые.Маркировка записей данных ember-данных как существующих
ответ
Вы должны использовать store.push
добавить уже существующие записи вместо store.createRecord
http://emberjs.com/api/data/classes/DS.Store.html#method_push
Я не нашел ничего официального, но модели действительно имеют свойство isNew. Поскольку это свойство только для чтения, вы не можете установить его непосредственно, но вы можете установить его на объекте CurrentState так:
var model = this.store.createRecord('model_name', cacheData);
model.set('currentState.parentState.isNew', false);
model.get('isNew') // => false
Я не могу говорить, является ли это лучший способ сделать это, но он должен делать то, что вы просите. Убедитесь, что у вас есть хорошие тесты :)
Это является удивительным. Я искал атрибут точно так. Установка этого атрибута сделала трюк для меня. Хотелось бы, чтобы Ember-данные немного испекли в кешировании через localStorage. Спасибо. –
Технически, на ваш ответ был дан ответ точно, что я просил, но IgotT указал, что я должен делать вместо этого. Спасибо за ответ. –
fwiw Я бы этого не делал :) –
- 1. Нет записей для существующих данных
- 2. Маркировка или маркировка неструктурированных данных
- 3. Обновление существующих отношений записей
- 4. Регенерировать идентификаторы существующих записей
- 5. Связывание нескольких существующих записей
- 6. Маркировка новых записей в форме Microsoft Access
- 7. Сбросить идентификационный столбец для существующих значений без удаления существующих записей
- 8. Маркировка удаленных записей в таблицах БД
- 9. Маркировка данных с разбросом данных
- 10. Маркировка сложного набора данных
- 11. Обновление существующих записей с помощью SQL
- 12. sql server - блокировка существующих записей в транзакции
- 13. Проверка существующих записей с подготовленным оператором MySQLi
- 14. генерировать номер серии для новых записей на основе существующих данных
- 15. Импорт данных CSV для обновления существующих записей с помощью Rails
- 16. Улучшение скорости обновления существующих записей (~ 11.000) в данных ядра
- 17. Восстановление таблицы Mysql без удаления существующих записей
- 18. Обновление существующих записей в Hibernate ManyToMany Relation
- 19. Предотвращение нескольких представлений данных/форм mysql и обновление существующих записей?
- 20. Проверка существующих элементов записей базы данных на элементы списка
- 21. cakePHP сохранение записей для объединения таблицы существующих записей
- 22. Java: Маркировка/маркировка файла
- 23. Excel VBA Добавление записей ниже существующих значений
- 24. Как предотвратить конфликты Django от существующих данных
- 25. Маркировка отдельных точек данных gnuplot
- 26. Маркировка классов в разделах данных
- 27. Новые записи создаются при использовании существующих записей
- 28. PHP терпит неудачу Обновление существующих записей
- 29. Маркировка записей с 1 по первому вступлению уникального значения
- 30. Маркировка Изменения в базе данных
Я дам эту попытку довольно скоро. Моя локальная стратегия кэширования становится все более сложной, поскольку я пытаюсь закончить кеширование данных. Я хочу, чтобы у ember-data было какое-то средство для кэширования в localstorage. Это выглядит чище, чем использование createRecord. –
Я использовал ваше решение вместо того, чтобы возиться с isNew. Это более чистое решение. Спасибо. –