问题标签 [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.
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
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.
pouchdb - PouchDB - 停止实时复制
在 PouchDB中设置continuous
(实时)复制后,我如何找到这些(如CouchDB_replicate
或_replicator
CouchDB 中的活动任务)?
或者更确切地说,我该如何取消它们?
couchdb - Pouch DB:数据库大小
我在 CouchDB 的同一个文档中存储了约 2500 张图像作为附件。这些图像在硬盘驱动器中占用大约 15MB,因此 CouchDB 大约为 17MB。
当我通过 PouchDB 将此文档推送给我的客户时,我看到生成的数据库超过 40 MB。我按照以下步骤进行了一些测试:
将 X 图像附件上传到 CouchDB 文档。
紧凑型沙发数据库
完全清除客户端缓存
重新加载客户端(在我的应用程序中,我在重新加载时复制数据)。
这是结果:
所以,似乎:
PouchDB 向每个附件添加大约 2K 控制数据。
当添加更多附件时,此控制数据会增加。(1.6K -> 2.3K -> 2.6K -> 2.8K...)
图像在 CouchDB 和 PouchDB 中都有 content_type:image/png。我知道这应该防止将它们存储为base64。我对么?
有没有人以前见过这个?有没有人能够解决它?当旨在使应用程序适应 iOS 50MB 空间限制时,这是一个大问题。
编辑
我继续检查了 pouchDB 与原始文件中一些图像的大小:
文件 1:原始大小 = 7.4K / PouchDB 大小 = 10.2K
文件 2:原始大小 = 5.1K / PouchDB 大小 = 6.8K
所以我认为在 PouchDB 中存储附件时大小的增加不是来自任何控制数据(至少它不相关),而是来自二进制文件在浏览器 IndexedDB 中的存储方式(我使用 Chrome 进行这些计算)。
那么,为了避免 PouchDB 中二进制大小的增加,是否需要做任何额外的事情?
data-synchronization - 与现场同步:假
我有一份正在运行的《入门指南》。它与 CouchDB 服务器(在 couchappy.com)完美同步。到目前为止,一切都很好。
我只需要通过用户操作(即用户点击按钮)进行同步。因此,我在标记中添加了一个按钮,并将单击事件连接到入门指南中提供的相同“sync()”函数。最后,我将两个“实时”选项从“真”更改为“假”。
无论我是否在客户端、服务器或任何地方更改值,当我单击按钮时,它都会调用同步函数,并且对于 replicate.to 和 replicate.from 都会出现错误。我一定错过了 PouchDB 中的一个基本概念。有人可以帮助我了解如何让复制工作而不是“实时”吗?
提前致谢。
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但是我在哪里可以获得会话?嗯。
任何谈论这个的方向或文章都会很棒。
couchdb - 如何在复制期间过滤数据并仅向用户提供他自己的文档?
我需要在客户端从 CouchDB 和 PouchDB 同步服务器数据。每个用户都有自己的数据。当他在线时,此数据正在更新。如何在复制期间过滤数据并仅向用户提供他自己的文档?这对我来说是安全问题。
javascript - 工厂中的 Angular 和 Pouch DB
我试图在应用程序启动时从 javascript 文件中加载 pouchdb 客户端数据库,但没有创建数据库。调试器中没有控制台错误。当我尝试调试时,它似乎在下面的这一行中失败,因为它退出了匿名函数并且不允许我进一步进入该函数。
在这里失败--> angular.module('app').factory(serviceId, ['pouchdb', createclientdb]);
知道为什么我可能做错了吗?
最新错误生成未捕获的异常。
我也有以下服务。有什么建议么?
javascript - PouchDB 出错:TypeError:angular.factory 不是函数
我试图弄清楚如何在 AngularJS 中使用 PouchDB。我正在尝试遵循这些说明https://github.com/wspringer/angular-pouchdb
我认为我在理解创建工厂和/或服务的语法时遇到了问题。我到了“与数据库交互”部分
应用程序.js
当我添加“db.put”时,我在浏览器控制台中看到的消息是:
javascript - 监控 pouchdb 复制的状态
如果用户失去互联网或服务器离线,我如何通知用户实时同步停止?