2016-05-07 12 views
1

Ich folgte alle Schritte für PouchDB Setup und SQLite. Ich bin vor folgenden Fragen:Probleme mit PouchDB + SQLite auf ionic 2

1) this._db.info() dann (console.log.bind (Konsole).) - zeigt Adapter: websql, sqlite_plugin: false

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

Ich bin nicht sicher, was ich falsch gemacht habe.

2) App funktioniert gut in Chrome. Auf Firefox hat es einen Fehler geworfen: this.db.sync ist keine Funktion. Ich habe es in PouchDB.sync geändert, dann ist der Fehler weg. Warum es passiert ist?

3) Auf firefox und IE Nach der oben genannten Änderung bekomme ich "AUSNAHME: Fehler: Ungefangen (in Versprechen): Fehler: Adapter fehlt".

ist dieser Fehler behoben: https://groups.google.com/forum/#!searchin/pouchdb/sqlite/pouchdb/-ROWHfB3Ty0/6qEfRkf6MTkJ

ich den Rat hier zu folgen versucht: Ionic PouchDb Sqlite plugin issue

Aber ich habe keine pouchdb Bibliothek in meinem index.html importiert. Es ist nicht dort im js-Ordner. Ich kann es im Knoten-Modul-Ordner finden.

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

Ich habe folgende Änderung sqlite2 Plugin zu aktivieren: Anzeigen

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

Warnungen zeigen, dass cordova und SQLite sind undefiniert

Antwort

0

"Adapter fehlt" ist ein PouchDB Fehler, dass es‘ t finden Sie die adapter, die in den PouchDB Konstruktor übergeben wurde. Hast du es falsch geschrieben? Es sollte sein: var db = new PouchDB('dbname', {adapter: 'websql'}).

OTOH kann es nicht sein, weil ich in Ihrer Ausgabe sqlite_plugin:false sehen, was bedeutet, dass das SQLite-Plugin nicht korrekt geladen wurde.

Sie können versuchen, SQLite Plugin 2, da es das am besten unterstützte SQLite-Plugin in Bezug auf PouchDB-Unterstützung ist. Andernfalls stellen Sie sicher, dass window.sqlitePlugin definiert ist, weil das zeigt, dass das Plugin korrekt geladen wurde.

+0

Hallo Nolan - Ich habe bereits SQLite Plugin 2 hinzugefügt und es zeigt immer noch den gleichen Fehler. Ich habe versucht, zu definieren: window.sqlitePlugin, aber ich konnte es nicht tun. Ich habe diesen Code gefunden: var db = window.sqlitePlugin.openDatabase ({name: "demo.db"}); Ich habe diesen Fehler: Kann die Eigenschaft 'openDatabase' von undefined nicht lesen. Ich muss etwas falsch machen. Bitte helfen Sie. –

+0

Ich habe das window.sqlitePlugin aber immer noch den gleichen Fehler eingerichtet. Im Setup von window.sqliteplugin wird angezeigt, dass das Plugin nicht geladen ist. –

+0

Es tut mir leid, ich bin mir nicht sicher, warum das Plugin nicht geladen ist. Vielleicht möchten Sie [dieses Tutorial] (http://gonehybrid.com/how-to-use-pouchdb-sqlite-for-local-storage-in-ionic-2/) lesen oder [eine Cordova-Beispielanwendung mit SQLite ausprobieren Speicher] (https://github.com/nolanlawson/pouchdb-cordova-hello-world-with-sqlite-plugin). – nlawson