2016-05-07 3 views
1

Я выполнил все шаги для настройки PouchDB и SQLite. Я столкнулся следующие вопросы:Проблемы с PouchDB + SQLite на ионных 2

1) this._db.info(), а затем (console.log.bind (консоль.)) - показывает адаптер: WebSQL, sqlite_plugin: ложные

Object 
    adapter:"websql" 
    auto_compaction:false 
    db_name:"bakbak" 
    doc_count:15 
    sqlite_plugin:false 
    update_seq:15 
    websql_encoding:"UTF-8" 

Я не конечно, что я сделал не так.

2) Приложение отлично работает на Chrome. В firefox это забросило ошибку: this.db.sync не является функцией. Я изменил его на PouchDB.sync, тогда ошибка исчезла. Почему это случилось?

3) В firefox и IE После внесения изменений я получаю «ИСКЛЮЧЕНИЕ: Ошибка: нечистота (в обещании): Ошибка: отсутствует адаптер».

эта ошибка решена: https://groups.google.com/forum/#!searchin/pouchdb/sqlite/pouchdb/-ROWHfB3Ty0/6qEfRkf6MTkJ

Я пытался следовать советам здесь: Ionic PouchDb Sqlite plugin issue

Но я не любая библиотека pouchdb импортирован в моей index.html. Его нет в папке js. Я могу найти его в папке узловых модулей.

<body> 
<ion-app></ion-app> 
<!-- cordova.js required for cordova apps --> 
<script src="cordova.js"></script> 
<!-- Polyfill needed for platforms without Promise and Collection support --> 
<script src="build/js/es6-shim.min.js"></script> 
<!-- Zone.js and Reflect-metadata --> 
<script src="build/js/angular2-polyfills.js"></script> 
<!-- the bundle which is built from the app's source code --> 
<script src="build/js/app.bundle.js"></script> 
</body> 

Я сделал следующие изменения, чтобы включить sqlite2 плагин:

<script type="text/javascript"> 
document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() { 
    var db; 

    alert("window.cordova: " + window.cordova); 
    alert("window.SQLitePlugin: " + window.SQLitePlugin); 

    if (window.cordova && window.SQLitePlugin) { // because Cordova is platform specific and doesn't work when you run ionic serve    
     db = window.sqlitePlugin.openDatabase({ "name": "bakbak" }); //device - SQLite 
     alert("device db (SQLite) loaded"); 
    } else { 

     db = window.openDatabase("APSNetMobileDb", "1.0", "bakbak", 100 * 1024 * 1024); // browser webSql, a fall-back for debugging 
     alert("browser db (WebSQL) loaded"); 
    } 
    </script> 

Alerts показывают, что Cordova и SQLite неопределенны

ответ

0

"Адаптер отсутствует" указывает, ошибка PouchDB, что он может» t найдите adapter, который был передан в конструктор PouchDB. Вы опечалили его? Это должно быть: var db = new PouchDB('dbname', {adapter: 'websql'}).

OTOH это может быть не так, потому что я вижу на вашем выходе sqlite_plugin:false, что означает, что плагин SQLite был неправильно загружен.

Возможно, вы захотите попробовать SQLite Plugin 2, так как это лучший поддерживаемый плагин SQLite с точки зрения поддержки PouchDB. Else убедитесь, что определено значение window.sqlitePlugin, потому что это показывает, что плагин загружен правильно.

+0

Hi Nolan - я уже добавил плагин SQLite 2 и по-прежнему показывает ту же ошибку. Я попытался определить: window.sqlitePlugin, но я не мог этого сделать. Я нашел этот фрагмент кода: var db = window.sqlitePlugin.openDatabase ({name: "demo.db"}); Я получил эту ошибку: Не могу прочитать свойство openDatabase неопределенного. Я должен делать что-то неправильно. Пожалуйста помоги. –

+0

Я настраиваю window.sqlitePlugin, но по-прежнему ту же ошибку. В настройке window.sqliteplugin показано, что плагин не загружен. –

+0

Прошу прощения, я не уверен, почему плагин не загружен. Возможно, вы захотите прочитать [этот учебник] (http://gonehybrid.com/how-to-use-pouchdb-sqlite-for-local-storage-in-ionic-2/) или попробовать [пример приложения Кордовы с использованием SQLite Хранение] (https://github.com/nolanlawson/pouchdb-cordova-hello-world-with-sqlite-plugin). – nlawson

Смежные вопросы