- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 Cordova 编写一个字典应用程序。数据大小约为20MB。
我希望应用程序完全离线工作,并在本地查询数据。我发现 PouchDB 非常适合这样做。
但是,我还希望应用程序预装所有数据(JSON 格式)。即把所有数据放入app包中(Cordova项目的www/data文件夹中)。
据我所知,PouchDB 可以创建数据或从服务器同步数据,但我想知道它如何利用应用程序 www 文件夹内的数据文件。
而且,我应该如何格式化数据文件,以便PouchDB可以直接从中查询,而不必先从文件中读取数据,然后将数据插入PouchDB。
有人有什么想法吗?或者也许任何其他 JS 库可以完成此任务?
谢谢!
最佳答案
经过一些研究,我想比较目前的一些可能的选择:
直接使用PouchDB
这是不切实际的,因为:1)你必须在第一次启动时将数据插入PouchDB,这可能非常慢; 2)内存使用率很高,因为你会首先将所有数据加载到内存中(除非你拆分它们); 3)Cordova应用程序不能在后台运行;用户可以在插入数据时退出应用程序。
PouchDB 的 sqlite 插件
一个可能的解决方案。您需要使用文件传输插件将数据复制到“工作文件夹”中。
缺点:
将数据拆分为应用程序包内较小的 json 文件(位于/www 文件夹中)
这是我目前使用的。我将数据分成大约 100 个较小的 .json 文件,并将它们放入/www 文件夹中。然后我可以使用 XHR 请求根据查询动态加载它们。
优点:
缺点:
洛基斯
Lokijs 是一个高性能内存数据库。它可以从 JSON 加载数据库,或(使用 unoffical plugin )从文件系统加载数据库。
缺点:
另一件值得期待的事情是 PouchDB 的文件系统适配器。至少有些人正在考虑这个问题:https://github.com/pouchdb/pouchdb/issues/4631
<小时/>预加载数据时出现问题:
预加载数据通常意味着将应用程序包内的数据复制到操作系统提供的数据目录(因平台而异)。
经常会涉及到Cordova的File插件和File Transfer插件。目前文件插件无法访问应用程序包内的数据(尽管插件中定义了appDirectory)。您必须使用文件传输插件将数据文件从应用程序包复制到数据文件夹。
关于javascript - 使用 Cordova 和 PouchDB 离线数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33461054/
在 Pouchdb 中,处理多个数据集合的最佳方式是什么?我的意思是,例如,我需要多个待办事项列表,而不是一个简单的待办事项列表,例如:家庭待办事项、工作待办事项、社区待办事项和生态待办事项。 我应该
https://pouchdb.com/guides/compact-and-destroy.html 中的 PouchDB 文档引起了我的注意。 : By default, PouchDB and
PouchDB最佳实践建议是使用 PUT而不是 POST用于创建新文档(类似于 rdbms 中的一行),主要是因为后者会生成一个随机 ID,这使得后续数据排序效率低下。 PUT另一方面,需要提供用户生
我来自 Mysql 背景,现在正在使用 Pouchdb。我习惯了每个应用程序有 1 个数据库和许多表的 SQL 模式。 在 pouchDB 中则不同,因为数据不是存储在表中而是存储在文档中。因此,在我
我不知道在哪里可以捕获在 pouch 中访问远程 couchdb 的失败尝试。例如: var testPouchDB = new PouchDB('http://remotedb-url/non-ex
我在 pouchdb 中有一些数据,我想显示 pouchdb 中的总行数,我该怎么做? angular.module("pouchapp", ["ui.router"]) .run(function(
在浏览器中处理与同一远程/本地数据库同时同步的多个 PouchDB 实例的推荐方法是什么? 我的设置是浏览器中的一个 Web 应用程序,它与远程 CouchDB 持续同步。 该 Web 应用程序可以多
有没有办法更新文档的id?我试图通过以下代码实现这一点,但这会引发错误(如下): this.db.get('oldId') .then(document => { this.logshee
我正在使用 PouchDB 和 node.js 将我的文档存储在服务器上,但在开发过程中,许多有缺陷或需要删除的文档已经开始在数据库中积累。 是否有像 SQL Studio 这样的 GUI 客户端,它
我使用 CouchDB 作为后端,使用 PouchDB 在 vuejs 应用程序中查询/同步数据库。 我有 4 种不同类型的文档都存储在一个数据库中,如上所示: { "_id": "patient
CouchDB 文档: "members": [ { "name": "Mark", "age": 35, }, { "name": "
我在使用 pouchdb-find 创建索引以在 pouchDB 中搜索时遇到了一些麻烦.我一直收到错误 找不到可用的索引。尝试在以下位置创建索引:dateCreated。确保只有 $eq、$gt、$
我正在尝试将我的 redux 状态同步到 PouchDB 实例,但遇到了问题。 正如日志中所示,在操作发生后,我的 redux 状态既没有同步到 PouchDB,PouchDB 文档也没有在更新时同步
首先,我对使用 cloudant 还很陌生,所以这对我来说是一个非常陡峭的学习曲线。任何帮助表示赞赏。到目前为止我能找到的所有信息都来自几年前看似过时的 SO 帖子。 我已经设置了一项在我的资源列表中
首先,我对使用 cloudant 还很陌生,所以这对我来说是一个非常陡峭的学习曲线。任何帮助表示赞赏。到目前为止我能找到的所有信息都来自几年前看似过时的 SO 帖子。 我已经设置了一项在我的资源列表中
我正在使用 Angular5 项目测试 PouchDB。我想使用这些 pouchdb 插件: pouchdb-find relational-pouch 所以我知道如何导入 PouchDB: impo
我是 pouchdb 和 nw.js 的新手,可能这个问题有点太简单了(抱歉我的无知)。 我试图通过 require() 在 nw.js 项目中使用 pouchdb,但没有成功。 根据 pouchdb
在 PouchDB 中设置了一个continuous(实时)复制之后,我如何找到这些(比如 _replicate 或 _replicator 的事件任务)在 CouchDB 中)? 或者更确切地说,我
我在应用程序启动时建立同步(与事件监听器),我需要停止它并再次运行。有一个 .cancel() 函数可以工作,但我如何才能重新启动同步? 我试图删除在 cancel() 之后从 sync() 函数返回
假设我们将以JSON对象表示的汽车(约40MB)存储在PouchDB中,并且我们想基于马力属性进行搜索。 sql中的示例:从HP> 100的汽车中选择*。 您可以按键查询pouchDB,但是显然HP并
我是一名优秀的程序员,十分优秀!