PouchDB не обнаруживает плагин sqlite с помощью кордовы

Недавно я использовал PouchDB, чтобы получить простой способ разработки с помощью мобильного телефона, но, похоже, возникла небольшая проблема, когда я пытаюсь развернуть его на мобильном телефоне. Видите ли, наши данные будут содержать огромное количество, поэтому единственный вариант здесь — использовать плагин sqlite для базы данных вместо websql или indexeddb. Поэтому я попробовал пример, предоставленный документацией, и он работал очень хорошо. Но когда я console.log(pouch.adapter), он говорит «websql». Я попытался просмотреть базу данных с помощью eclipse, но там ничего не было. Как заставить pouchdb всегда использовать sqlite? Спасибо!

Tldr; попытался развернуть pouchDB с плагином sqlite, но вместо этого он использовал websql. пытаясь заставить pouchDB постоянно использовать sqlite.


person Mike Shreek    schedule 16.01.2015    source источник
comment
Пробовали ли вы задать его самим разработчикам? groups.google.com/forum/#!forum/pouchdb   -  person locknies    schedule 16.01.2015


Ответы (3)


Я ответил в группах Google, но в основном db.adapter будет сообщать «websql», независимо от того, использует ли он WebSQL или плагин SQLite. Немного запутанно, извините за это!

Обновление: начиная с PouchDB 3.4.0, вы можете вызвать db.info().then(console.log.bind(console)) и распечатать информацию о базе данных, и она сообщит sqlite_plugin true или false. Облегчает отладку. :)

person nlawson    schedule 16.01.2015
comment
В треде вы говорите, что если вы видите, что файлы *.db создаются внутри каталога вашего приложения, то да. :) [что подтверждает, что ваш адаптер использует sqlite]. Можете ли вы привести пример пути, указывающего, о каких файлах вы говорите? Я не уверен, что искать на моем пути. - person chrishiestand; 10.03.2015
comment
На Android это /data/data/com.company.appname/databases - person nlawson; 10.03.2015
comment
@nlawson привет, я использую angularjs и cordova для своего приложения. Я импортировал файлы js в следующем порядке. кордова, нг-кордова, sqllite.js, pouchdb.js. Тем не менее, я получаю sqlite_plugin:false. у тебя есть идеи? - person yokks; 07.02.2016
comment
@yokks У меня тоже такая же проблема (с использованием ionic framework). Удалось решить? - person James J; 17.02.2016
comment
@JamesJ привет, у меня крайний срок. прямо сейчас я перешел на кордову вместо ng-cordova. я должен найти способ позже. если найдете, дайте пожалуйста знать. - person yokks; 18.02.2016
comment
Cordova, вероятно, не раскрывает window.sqlitePlugin, что и ищет PouchDB. просто догадка. - person nlawson; 18.02.2016
comment
@nlawson есть ли способ заставить его раскрыть это? - person James J; 24.02.2016
comment
Я не знаю. Вам нужно проверить github.com/brodysoft/Cordova-SQLitePlugin. - person nlawson; 24.02.2016
comment
@yokks Я решил проблему, добавив CSP в index.html в соответствии с github.com/apache/ Cordova-plugin-whitelist надеюсь, что это поможет. - person James J; 26.02.2016
comment
@JamesJ Я раньше не пробовал CSP. Можешь поделиться? - person yokks; 26.02.2016
comment
@yokks Вам нужно установить правила в соответствии с документами, но, поскольку я не загружаю внешний контент, это работает для меня (добавлено в index.html) <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *"> - person James J; 26.02.2016
comment
Оказывается, это не исправило. Похоже, плагин загружен правильно, когда я регистрирую window.sqlitePlugin.echoTest(); внутри готового устройства, я получаю isSqlLitePlugin: true, но pouchDB db.info().then(console.log.bind(console)); дает мне sqllite_plugin: false. Кошмар. - person James J; 14.03.2016
comment
если window.sqlitePlugin доступен в момент загрузки PouchDB, то он будет использовать подключаемый модуль SQLite. Таким образом, вы должны правильно расположить теги script. Также убедитесь, что вы используете PouchDB 3.4.0 или более позднюю версию. - person nlawson; 15.03.2016

В одной из последних версий была ошибка, и pouchdb не использовал sqllite. Вы можете увидеть больше здесь: https://github.com/pouchdb/pouchdb/issues/3505

person alfredoo    schedule 10.04.2015

Убедитесь, что вы установили этот плагин

cordova plugin add https://github.com/litehelpers/Cordova-sqlite-storage

и используйте это в своем JS-скрипте

var db = new PouchDB('new_puchDB', {adapter : 'websql'});

убедитесь, что плагин был установлен правильно, а ваша версия Cordova 3.0+ (работает с последней версией — я использую ее, пока мы говорим)

person Pian0_M4n    schedule 24.04.2015
comment
Мне нужно использовать pouchdb с плагином sqlite. У меня есть ионное приложение с установленным pouchdb. У меня также установлен плагин cordova-sqlite-storage с github.com/brodysoft/Cordova-SQLitePlugin. . Когда я запускаю 'db.info().then(console.log.bind(console))', он дает мне ** sqlite_plugin: false** . Порядок включения файлов в мой index.html: ng-cordova.js, cordova.js, pouchdb.js. Нужно ли нам также включать SQLite.js? - person Priya Saini; 16.06.2016
comment
Конечно. Убедитесь, что плагин загружен в Cordova. Проверьте cordova_plugins.js и убедитесь, что все установлено. Проверьте объект clobber и напишите имя переменной в консоли, чтобы убедиться, что она существует. - person Pian0_M4n; 16.06.2016