我们正在认真探索Ionic,PouchDb和CouchDb作为我们要求的解决方案之一,我们需要构建一个可提供离线同步功能并且与平台无关的移动应用程序。
我们拥有的另一个主要要求是,离线模式下的数据本质上是持久性的,并且可以增长超过500 MB,并且由于PouchDb将使用IndexedDB / WebSQL适配器等以离线模式存储数据,它在移动和网络平台上有一定的大小限制,而且数据本质上也不是持久性的。
然后我在pouchdb网站本身看到了这篇文章:
在哪里可以使用Cordite的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
这是Ionic版本信息: Click to see the Ionic version information currently using by me.
PouchDB版本:5.2.0
如果有人能帮助我解决这个问题,我将非常感激。提前谢谢。
答案 0 :(得分:1)
有a Cordova app using PouchDB and the SQLite Plugin的演示。您很可能只需要确保在PouchDB <script>
之前加载SQLite插件<script>
。
也就是说,如果您的应用数据严重为500MB(半GB!),我建议不要使用PouchDB。特别是如果你没有使用同步,那么PouchDB对修订结构的开销太大,而且运行缓慢。
最好直接使用SQLite插件。希望有所帮助!