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){

});

и принять меры.

Другие вопросы по тегам