问题标签 [pouchdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3453 浏览

angularjs - 添加 cache.manifest 时,AngularJS/PouchDB 应用程序停止同步到 CouchDB

我有一个使用 AngularJS 编写的单页 ​​Web 应用程序。它使用 PouchDB 复制到 CouchDB 服务器并且工作正常。

当我尝试通过添加 cache.manifest 将网页转换为可离线使用时,问题就出现了。突然间,所有复制任务都会抛出错误并停止工作,无论是离线工作还是在线工作。

在 Chrome 中,它只是说“GET ...myCouchIP/myDB/?_nonce=CxVFIwnEJeGFcyoJ net::ERR_FAILED”

在 Firefox 中,它也会引发错误,但会提到请求被阻止 - 尝试启用 CORS。

根据 PouchDB 设置页面中的说明,在远程 CouchDB 上启用了 CORS。此外,它在不使用 cache.manifest 时也能正常工作(也就是说,它对我的​​办公桌、服务器和虚拟机之间的所有不同 IP 地址感到非常满意——它是一个原型,因此目前没有域名)。

顺便说一句,此时我没有使用任何类型的身份验证。管理员方生效。

那么添加 cache.manifest 时会发生什么变化?欢迎提供线索。提前致谢。

应用程序.js

控制器.js

服务.js

缓存清单

索引.html

概述.html

machineForm.html

0 投票
1 回答
6199 浏览

javascript - How to update a single field in a pouchDB document

I create a pouchDB document with "_id", "name", and "status" fields. However, I find that if I want to update the "status" field of the document then I need to also specify all the other fields I am NOT changing as well otherwise they get erased. That is, if I do not specify the "name" field on update, there will no longer be a "name" field on the document.

This is the code for updating the document

And here is the code used to pull the record out

If I don't specify the "name" field on update, the array returned by the emit() call in pouchDB.query contains a null value where I expect the "name" value to be.

0 投票
2 回答
1739 浏览

pouchdb - PouchDB - 停止实时复制

在 PouchDB中设置continuous(实时)复制后,我如何找到这些(如CouchDB_replicate_replicatorCouchDB 中的活动任务)?

或者更确切地说,我该如何取消它们?

0 投票
1 回答
5188 浏览

couchdb - Pouch DB:数据库大小

我在 CouchDB 的同一个文档中存储了约 2500 张图像作为附件。这些图像在硬盘驱动器中占用大约 15MB,因此 CouchDB 大约为 17MB。

当我通过 PouchDB 将此文档推送给我的客户时,我看到生成的数据库超过 40 MB。我按照以下步骤进行了一些测试:

  1. 将 X 图像附件上传到 CouchDB 文档。

  2. 紧凑型沙发数据库

  3. 完全清除客户端缓存

  4. 重新加载客户端(在我的应用程序中,我在重新加载时复制数据)。

这是结果:

所以,似乎:

  1. PouchDB 向每个附件添加大约 2K 控制数据。

  2. 当添加更多附件时,此控制数据会增加。(1.6K -> 2.3K -> 2.6K -> 2.8K...)

图像在 CouchDB 和 PouchDB 中都有 content_type:image/png。我知道这应该防止将它们存储为base64。我对么?

有没有人以前见过这个?有没有人能够解决它?当旨在使应用程序适应 iOS 50MB 空间限制时,这是一个大问题。

编辑

我继续检查了 pouchDB 与原始文件中一些图像的大小:

  1. 文件 1:原始大小 = 7.4K / PouchDB 大小 = 10.2K

  2. 文件 2:原始大小 = 5.1K / PouchDB 大小 = 6.8K

所以我认为在 PouchDB 中存储附件时大小的增加不是来自任何控制数据(至少它不相关),而是来自二进制文件在浏览器 IndexedDB 中的存储方式(我使用 Chrome 进行这些计算)。

那么,为了避免 PouchDB 中二进制大小的增加,是否需要做任何额外的事情?

0 投票
1 回答
113 浏览

data-synchronization - 与现场同步:假

我有一份正在运行的《入门指南》。它与 CouchDB 服务器(在 couchappy.com)完美同步。到目前为止,一切都很好。

我只需要通过用户操作(即用户点击按钮)进行同步。因此,我在标记中添加了一个按钮,并将单击事件连接到入门指南中提供的相同“sync()”函数。最后,我将两个“实时”选项从“真”更改为“假”。

无论我是否在客户端、服务器或任何地方更改值,当我单击按钮时,它都会调用同步函数,并且对于 replicate.to 和 replicate.from 都会出现错误。我一定错过了 PouchDB 中的一个基本概念。有人可以帮助我了解如何让复制工作而不是“实时”吗?

提前致谢。

0 投票
1 回答
542 浏览

php - 从 Couchdb 返回用户特定数据

背景:我有一个 mysql 数据库,我将转移到 couchdb 中,该数据库中有一些表、“书籍”和“用户”。我通过登录表单登录到 Web 应用程序,目前在 php 脚本中发布用户名和密码,然后登录用户并将 php 会话写入该用户的 users 表。现在,当用户请求书籍时,我 a) 确保 php 会话对用户有效,然后使用登录的用户 ID 获取用户可以查看的书籍。

问题:您将如何在 couchdb 中复制这种用户特定的记录查询?我假设 couchdb 的全部意义在于能够说http://somesite.com/couchdb/getBooks/并且 db 端点返回书籍。

也许我只需要在最后传递一个 sessionid ?http://somesite.com/couchdb/getBooks/?s=123123但是我在哪里可以获得会话?嗯。

任何谈论这个的方向或文章都会很棒。

0 投票
2 回答
2027 浏览

couchdb - 如何在复制期间过滤数据并仅向用户提供他自己的文档?

我需要在客户端从 CouchDB 和 PouchDB 同步服务器数据。每个用户都有自己的数据。当他在线时,此数据正在更新。如何在复制期间过滤数据并仅向用户提供他自己的文档?这对我来说是安全问题。

0 投票
1 回答
840 浏览

javascript - 工厂中的 Angular 和 Pouch DB

我试图在应用程序启动时从 javascript 文件中加载 pouchdb 客户端数据库,但没有创建数据库。调试器中没有控制台错误。当我尝试调试时,它似乎在下面的这一行中失败,因为它退出了匿名函数并且不允许我进一步进入该函数。

在这里失败--> angular.module('app').factory(serviceId, ['pouchdb', createclientdb]);

知道为什么我可能做错了吗?

最新错误生成未捕获的异常。

我也有以下服务。有什么建议么?

0 投票
2 回答
822 浏览

javascript - PouchDB 出错:TypeError:angular.factory 不是函数

我试图弄清楚如何在 AngularJS 中使用 PouchDB。我正在尝试遵循这些说明https://github.com/wspringer/angular-pouchdb

我认为我在理解创建工厂和/或服务的语法时遇到了问题。我到了“与数据库交互”部分

应用程序.js

当我添加“db.put”时,我在浏览器控制台中看到的消息是:

0 投票
1 回答
93 浏览

javascript - 监控 pouchdb 复制的状态

如果用户失去互联网或服务器离线,我如何通知用户实时同步停止?