Может ли Appcache Meteor также хранить данные базы данных?

С последней версией Meteor 0.5.9 я экспериментировал с пакетом appcache, и мне очень понравилась его функциональность.

Я использовал meteor create --example leaderboard, а затем meteor add appcache, чтобы проверить поведение, и страница загружается даже тогда, когда сервер вообще не работает! Очень круто!

Тем не менее, база данных не кэшируется? Когда сервер не работает

Players.find().fetch()

возвращается

[]

Для меня это довольно показательно, так как я делаю приложение для заметок, в котором заметки также должны быть доступны в автономном режиме. Я что-то упустил или есть альтернативный способ получения данных из базы данных в автономном режиме?


person Nick    schedule 18.03.2013    source источник


Ответы (2)


Пакет appcache не кэширует ваши данные. См. документацию:

Пакет appcache хранит статические части приложения Meteor (Javascript на стороне клиента, HTML, CSS и изображения) в кеше приложения браузера.

[...]

(Обратите внимание, однако, что пакет appcache сам по себе не делает данные доступными в автономном режиме: в приложении, загруженном в автономном режиме, коллекция метеоров будет казаться пустой в клиенте, пока Интернет не станет доступным и браузер не сможет установить подключение к данным в реальном времени) .

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

Пакет appcache предназначен только для кэширования статических ресурсов. В качестве кеша приложения он кэширует ресурсы, необходимые приложению, включая HTML, CSS, Javascript и файлы, опубликованные в каталоге public/.

person Rahul    schedule 18.03.2013

Посмотрите на пакет Ground:DB для этого использования. Этот пакет создает кеширование на стороне клиента коллекций, на которые подписаны.

https://atmospherejs.com/ground/db

Пример коллекции, которая будет заполняться подписками Meteor (вызов подписки требуется отдельно)

localCollection = new Ground.Collection('mongoName');

Пример отключенной коллекции (поэтому вам нужно заполнить ее самостоятельно)

disconnectedCollection = new Ground.Collection('localName', {connection:null} );
person MultiMat    schedule 13.04.2015