问题标签 [couchdb-2.0]
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.
triggers - 文档更新与 CouchDB 设计更新冲突
我正在尝试创建一个等效于传统 RDBM 中使用的创建/更新触发器。create_ts 的创建很好,但是 update_ts 部分对我不起作用。
文件创建好了:
{"error":"conflict","reason":"文档更新冲突。"}
我觉得我在理解 couchdb 文档更新时遗漏了一些基本的东西。
couchdb - 忽略零星文档的 CouchDB 复制
我的应用程序有一个 CouchDB 设置 (CouchDB 2.1.1),它在很大程度上依赖于复制完整性。我们正在使用“每个用户一个 db”的方法,以及一个额外的“角色”db:s 层,如下图所示对用户进行分组。
最近,在增加 Beta 测试人员数量的同时,我们发现一些文档没有按照应有的方式进行复制。我们无法看到文档大小、创建/更新时间、用户或其他方面的任何模式。这些错误似乎偶尔发生,2-3 个成功复制的文档,然后是 4-6 个非复制的文档。
服务器响应{"error":"not_found","reason":"missing"}
这些文档。
大多数(但不是全部)用户文档已复制到相应的角色数据库,但很少有人一直复制到主数据库。这在使用 < 100 个文档进行测试时从未发生过(现在我们在 db 中有 1000-1200 个文档)。
我发现文档的性能章节中提到的“最大打开文件”设置存在问题并修复了它,但未复制的文档仍然没有复制。如果我打开一个文档并保存它,它将复制。
这是我目前的理论:
- 用户上线时复制过程尝试复制新文档
- 由于 Linux 的“max_open_files”达到峰值,写入过程失败
- 主数据库仍然认为复制成功
- 在以后的复制中,主数据库会忽略那些旧文档,只尝试复制新文档
这可能是正确的吗?我能否以某种方式让 CouchDB 服务器“仔细检查”所有文档和以前复制的完整性?
感谢您的时间和任何有用的评论!
couchdb - CouchDB 复制到集群
我正在尝试使用数据库的主副本设置单个 CouchDB 节点,并将其复制(一种方式)到三节点 CouchDB 集群。我想为 HA 和性能这样做,用户会与只读集群交谈。
此设置似乎不起作用,无论我尝试什么,复制总是会出现授权错误。我 100% 确定密码是正确的。实际上,我什至无法在集群内的一个数据库和另一个数据库之间设置复制。所有四个节点都运行 2.3.0。
复制与集群不兼容吗?
couchdb - CouchDB v1.7.1 数据库复制到 CouchDB v2.3.0 数据库失败
在 Fauxton 中,我设置了从 CouchDB v1.7.1 数据库到新的 CouchDB v2.3.0 数据库的复制规则。
源未配置任何身份验证。目标确实如此。我已将用户名和密码添加到作业配置中。
看起来复制在过程中的某个地方被卡住了。新数据库中有 283.8 KB(433 个文档)。源包含大约 18.7 MB(7215 个文档)的数据。
重新启动数据库时,我总是收到以下错误:
[错误] 2019-02-17T17:29:45.959000Z nonode@nohost <0.602.0> -------- throw:{unauthorized,<<"unauthorized to access or create database http://my-website .com/target-database-name/ ">>}: 复制 5b4ee9ddc57bcad01e549ce43f5e31bc+continuous 无法启动 " https://my-website.com/source-database-name/ " -> " http://my-website。 com/target-database-name/ " doc <<"shards/00000000-1fffffff/_replicator.1550593615">>:<<"1e498a86ba8e3349692cc1c51a00037a">> 堆栈:[{couch_replicator_api_wrap,db_open,4,[{file,"src/ couch_replicator_api_wrap.erl"},{line,114}]},{couch_replicator_scheduler_job,init_state,1,[{file,"src/couch_replicator_scheduler_job.erl"},{line,第584章
我不确定这里发生了什么。从日志中我了解到存在授权问题。但是数据库已经存在(因此,它已经被部分复制了)。
这个错误是什么意思,如何解决?
couchdb - 基于角色的 CouchDB 每个字段读取权限
我是 CouchDB 的新手。我不知道我是否可以限制角色可以从文档中读取的字段。如果可以,这是使用 CouchDB 的正确方法吗?
例如,如果我有这样的文件:
以及以下角色:
我希望管理员角色可以读取所有字段,而开发人员只能读取电子邮件和电话。我怎样才能做到这一点?使用验证功能?
couchdb - 自定义 CouchDb SSL 证书验证
我正在尝试将 CouchDB 配置为在通过 IP 访问的 IoT 设备上使用 SSL。我试图避免将网络服务器添加为反向代理,以尽量保持轻量级,而是使用 CouchDb 的内置 SSL 功能。
我遇到的问题是复制将无法通过通用名称证书验证,因为我们是通过 IP 访问的。我希望使用自定义验证功能来检查证书指纹。看起来verify_fun与类似ssl_verify_fingerprint 函数的组合可能是我正在寻找的,但我无法弄清楚如何在配置文件中使用它。如何更新此配置行以使用自定义功能?
verify_fun = {Module, VerifyFun}
couchdb - 有没有办法获得特定的修订?
我正在学习 CouchDB,我刚刚读到在解决冲突时,CouchDB 保留了文档的两个修订版本,获胜的一个和冲突的一个。CouchDB 是否保留同一文档的多个修订版?如何获得特定的修订?
nosql - 视图是重复数据还是只创建索引?
我正在学习 CouchDB,但我不明白:当我创建视图时,视图是复制emit
函数内部的数据还是仅基于它创建一个新索引?
例如,假设我有一个包含如下文档的数据库:
我的观点是这样的:
第一次执行视图时,CouchDB 会创建每个文档(发出的字段)和视图索引的副本吗?还是只会创建一个索引?