Ionic PouchDb Sqlite 插件问题

Posted

技术标签:

【中文标题】Ionic PouchDb Sqlite 插件问题【英文标题】:Ionic PouchDb Sqlite plugin issue 【发布时间】:2016-05-04 23:16:01 【问题描述】:

我们正在认真探索 Ionic、PouchDb 和 CouchDb,作为我们需要构建一个可以提供离线同步功能并且与平台无关的移动应用程序的需求之一的解决方案。

我们还有一个主要要求,离线模式下的数据本质上是持久性的,并且可以增长超过 500 MB,并且由于 PouchDb 将使用 IndexedDB / WebSQL 适配器等在离线模式下存储数据,它在移动和网络平台上有一定的大小限制,并且数据本质上不是持久性的。

然后我在 pouchdb 网站本身发现了这篇文章:

http://pouchdb.com/adapters.html

您可以在哪里使用 Cordova 的 SQLite 插件,您可以编写如下内容:

强制 PouchDb 使用 SQLite 插件。

var db = new PouchDB('myDB', adapter: 'websql');

但是当我使用以下代码测试代码以检查 WebSql 适配器是否使用 SQLite 插件时,无论是在 android(chrome 远程调试)还是 Web 平台。

db.info().then(console.log.bind(console));

sqlite_plugin 总是返回 false 并且它没有创建任何 .db 文件。虽然 PouchDb 和 CouchDb 同步工作正常。

Object doc_count: 5, update_seq: 42, sqlite_plugin: false, websql_encoding: "UTF-8", db_name: "birthdays"…
1.  adapter: "websql"
2.  auto_compaction: false
3.  db_name: "testDb"
4.  doc_count: 5
5.  sqlite_plugin: false
6.  update_seq: 42
7.  websql_encoding: "UTF-8"
8.  __proto__: Object
And also it mentioned

SQLite 插件当前未通过 PouchDB 测试套件。它 也往往比直接 IndexedDB/WebSQL 慢。我们推荐 避免使用 SQLite 插件,除非您使用 50MB 存储空间 在 ios 中存在限制,或者您需要对数据库进行本机或预加载访问 文件。

我使用以下命令安装 SQLite 插件:

cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin.git

这里是离子版本信息: Click to see the Ionic version information currently using by me.

PouchDB 版本:5.2.0

如果有人能帮助我解决这个问题,我将不胜感激。提前致谢。

【问题讨论】:

我也遇到了同样的错误。你解决了吗? 【参考方案1】:

有一个a Cordova app using PouchDB and the SQLite Plugin 的演示。很可能您只需要确保在 PouchDB <script> 之前加载 SQLite 插件 <script>

也就是说,如果您的应用数据严重到 500MB(半 GB!),我建议您不要使用 PouchDB。特别是如果你不使用同步,那么 PouchDB 的修订结构开销太大,并且运行缓慢。

您最好直接使用 SQLite 插件。希望对您有所帮助!

【讨论】:

非常感谢您的建议和帮助!

以上是关于Ionic PouchDb Sqlite 插件问题的主要内容,如果未能解决你的问题,请参考以下文章

我们可以使用 ionic 框架将视频存储在 sqlite 数据库中吗?如果可以,我们如何存储它?

带有sqlite的pouchdb上的“大”附件冻结了

使用 PouchDB 的 Ionic 应用程序性能问题

使用 listView 和 PouchDb 的 Ionic (v1) 应用程序出现问题

ionic 上的 Pouchdb 和 Cordova-sqlcipher-adapter:有可能吗?

通过 git clone 为 Ionic 框架添加 SQLite 插件时出错