Phonegap - доступ к данным в автономном режиме из базы данных
У меня есть несколько таблиц на моей стороне сервера, из которых мне нужно получить данные и сохранить их на моем Phonegap на стороне клиента, чтобы они могли быть доступны в автономном режиме.
Я нашел Lawnchair, но я не могу найти достаточно документации, как сохранить и обновить несколько таблиц.
Существует также WebSQL, но я считаю, что он устарел. (Пожалуйста, поправьте меня, если я ошибаюсь)
Как можно получить новые данные / текущие данные обновляются только тогда, когда устройство подключено онлайн?! Другими словами, любая операция будет выполняться с данными, сохраненными на устройстве.
2 ответа
Есть пара плагинов SQLite, я с успехом использовал один из Brodysoft: https://github.com/litehelpers/Cordova-sqlite-storage
Нет событий для того, когда устройство переходит в онлайн / офлайн. Есть плагин для событий подключения к сети (cordova-plugin-network-information). Вы также можете синхронизировать при запуске приложения или использовать кнопку / жест "синхронизировать сейчас", чтобы пользователь мог синхронизироваться по требованию.
Вы можете использовать pouchdb:
PouchDB - это база данных JavaScript с открытым исходным кодом, созданная на основе Apache CouchDB, которая хорошо работает в браузере.
Документация там действительно хорошая и работает довольно хорошо.
Вы можете использовать его для репликации / синхронизации (двунаправленной) вашей локальной базы данных с удаленной.
Вы всегда можете отключить репликацию и управлять ей самостоятельно.
Может использоваться с различными адаптерами:
- LocalStorage
- IndexedDB
- WebSQL
Может использоваться с плагином SQLite для Cordova/PhoneGap.
Ник Рабой создал по-настоящему хороший видеоурок о pouchdb на своем канале YouTube.
Если вы хотите активировать ручную синхронизацию, когда ваше приложение выходит в сеть, вы можете использовать cordova-plugin-network-information
:
cordova plugin add cordova-plugin-network-information
вместе с $ cordovaNetwork
Плагин от ngCordova.
Вы можете просто перехватить онлайн-событие:
$rootScope.$on('$cordovaNetwork:online', function(event, networkState){
});
и принять меры.