Я работаю над кэшированием своего хранилища данных ember-data для локального хранилища. При первой загрузке я запрашиваю, чтобы сервер загружал данные в хранилище, а затем загружал их в локальное хранилище. При последующих загрузках страницы я извлекаю данные из localstorage и загружаю их в хранилище. Я могу сделать это, используя метод pushMany.Как извлечь нормализованные данные из хранилища данных ember?
Метод pushMany
магазина требует нормализованных данных. Полезная нагрузка от сервера нормализована путем передачи его через сериализатор моделей. Как только нормализованные данные хранятся в магазине, кажется разумным полагать, что можно вытащить нормализованные данные.
Итак, как вы вытаскиваете нормализованные данные из магазина?
На каждой модели есть имущество _data
. Свойство '_data' работает только с плоскими моделями. Более сложные модели _data
свойство содержит заданные отношения.
Я хотел бы избежать необходимости сериализации/десериализации более одного раза.
This - моя текущая реализация. Проблема с методом toJson
заключается в загрузке всех ассоциаций, в том числе асинхронных отношений, которые не были разрешены. Я думаю, что существует фундаментальная проблема в отношении того, как данные ember разрешают отношения первичных/внешних ключей.
Я не знаю, если это то, что вы имеете в виду, но вы можете получить записи из магазина, не делая сервер запрос с использованием всех - через http://emberjs.com/guides/models/find-records/# toc_finding-all-records-of-a-type «Чтобы получить список записей, уже загруженных в хранилище, не создавая другого сетевого запроса, используйте все вместо этого». 'var posts = this.store.all ('post');' // => нет сетевого запроса – Craicerjack
вот gist https://gist.github.com/arenoir/528c4d77c9398e519984#file-local-cache- js-L47 –
это работает для моделей без связей. ИМО должен быть метод для модели для извлечения необработанных нормализованных данных. –