【问题标题】:Issues with PouchDB + SQLite on ionic 2离子 2 上的 PouchDB + SQLite 问题
【发布时间】:2016-09-02 13:31:52
【问题描述】:

我遵循了 PouchDB 设置和 SQLite 的所有步骤。我面临以下问题:

1) this._db.info().then(console.log.bind(console)) - 显示 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"

我不知道我做错了什么。

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

但我的 index.html 中没有导入任何 pouchdb 库。它不在 js 文件夹中。我可以在 node-modules 文件夹中找到它。

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

警报显示 cordova 和 sqlite 未定义

【问题讨论】:

    标签: sqlite pouchdb


    【解决方案1】:

    “Adapter is missing”是一个 PouchDB 错误,表明它找不到传递给 PouchDB 构造函数的 adapter。你拼错了吗?应该是:var db = new PouchDB('dbname', {adapter: 'websql'})

    但可能不是这样,因为我在您的输出中看到 sqlite_plugin:false 表示 SQLite 插件未正确加载。

    您可能想尝试SQLite Plugin 2,因为它是 PouchDB 支持方面最受支持的 SQLite 插件。否则请确保已定义 window.sqlitePlugin,因为这表明插件已正确加载。

    【讨论】:

    • 嗨 Nolan - 我已经添加了 SQLite 插件 2,但它仍然显示相同的错误。我试图定义:window.sqlitePlugin,但我做不到。我找到了这段代码: var db = window.sqlitePlugin.openDatabase( {name: "demo.db"});我收到此错误:无法读取未定义的属性“openDatabase”。我一定做错了什么。请帮忙。
    • 我设置了 window.sqlitePlugin 但仍然是同样的错误。在 window.sqliteplugin 的设置中显示插件没有加载。
    • 对不起,我不确定为什么插件没有加载。您可能想阅读this tutorial 或尝试a sample Cordova app using SQLite Storage
    猜你喜欢
    • 2016-08-16
    • 2016-05-04
    • 2017-10-10
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2022-09-30
    • 2018-08-03
    相关资源
    最近更新 更多