问题标签 [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.

0 投票
1 回答
905 浏览

triggers - 文档更新与 CouchDB 设计更新冲突

我正在尝试创建一个等效于传统 RDBM 中使用的创建/更新触发器。create_ts 的创建很好,但是 update_ts 部分对我不起作用。

文件创建好了:

{"error":"conflict","re​​ason":"文档更新冲突。"}

我觉得我在理解 couchdb 文档更新时遗漏了一些基本的东西。

0 投票
1 回答
113 浏览

couchdb - CouchDB 2.x 下 local_seq 的行为是什么?

在 CouchDB 1.x 中,文档有一个“隐藏”._local_seq字段,用于跟踪数据库在编写文档修订时的状态下的更新顺序。这可以通过{local_seq:true}在设计文档中包含选项来由视图使用,或者由客户端使用?local_seq=true文档 GET 请求上的查询选项来获取。

该字段在 CouchDB 2.x 中仍然可用,但不清楚它的行为方式。由于集群,数据库更新序列现在是“一个不透明的令牌”,而 local_seq 仍然是一个普通整数,在实践中似乎并不总是匹配。

是否有任何关系,特别是如果我将自己限制在单节点集群中?

0 投票
1 回答
434 浏览

couchdb - 忽略零星文档的 CouchDB 复制

我的应用程序有一个 CouchDB 设置 (CouchDB 2.1.1),它在很大程度上依赖于复制完整性。我们正在使用“每个用户一个 db”的方法,以及一个额外的“角色”db:s 层,如下图所示对用户进行分组。

最近,在增加 Beta 测试人员数量的同时,我们发现一些文档没有按照应有的方式进行复制。我们无法看到文档大小、创建/更新时间、用户或其他方面的任何模式。这些错误似乎偶尔发生,2-3 个成功复制的文档,然后是 4-6 个非复制的文档。

服务器响应{"error":"not_found","reason":"missing"}这些文档。

大多数(但不是全部)用户文档已复制到相应的角色数据库,但很少有人一直复制到主数据库。这在使用 < 100 个文档进行测试时从未发生过(现在我们在 db 中有 1000-1200 个文档)。

我发现文档的性能章节中提到的“最大打开文件”设置存在问题并修复了它,但未复制的文档仍然没有复制。如果我打开一个文档并保存它,它将复制。

这是我目前的理论:

  1. 用户上线时复制过程尝试复制新文档
  2. 由于 Linux 的“max_open_files”达到峰值,写入过程失败
  3. 主数据库仍然认为复制成功
  4. 在以后的复制中,主数据库会忽略那些旧文档,只尝试复制新文档

这可能是正确的吗?我能否以某种方式让 CouchDB 服务器“仔细检查”所有文档和以前复制的完整性?

感谢您的时间和任何有用的评论!

沙发复制模式

0 投票
1 回答
261 浏览

couchdb - CouchDB 复制到集群

我正在尝试使用数据库的主副本设置单个 CouchDB 节点,并将其复制(一种方式)到三节点 CouchDB 集群。我想为 HA 和性能这样做,用户会与只读集群交谈。

此设置似乎不起作用,无论我尝试什么,复制总是会出现授权错误。我 100% 确定密码是正确的。实际上,我什至无法在集群内的一个数据库和另一个数据库之间设置复制。所有四个节点都运行 2.3.0。

复制与集群不兼容吗?

0 投票
1 回答
76 浏览

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章

我不确定这里发生了什么。从日志中我了解到存在授权问题。但是数据库已经存在(因此,它已经被部分复制了)。

这个错误是什么意思,如何解决?

0 投票
1 回答
460 浏览

couchdb - 设置 Apache CouchDB 屏幕在容器重启时重新出现

我使用官方 Docker 映像运行 CouchDB v2.3。我已经使用 Fauxton 将数据库配置为单节点。

/data 目录挂载到本地目录。当我重新启动容器时,数据库仍然存在。所以卷绑定按预期工作。

现在,每次我重新启动容器并导航到“设置”选项卡时,看起来 CouchDB 不记得我已将其配置为单节点。

重新启动图像后,我一直看到以下屏幕 在此处输入图像描述

再次配置后,我会看到以下屏幕

在此处输入图像描述

直到我重新启动容器。然后我必须再次进入第一个屏幕。

这里发生了什么?

0 投票
1 回答
191 浏览

couchdb - 基于角色的 CouchDB 每个字段读取权限

我是 CouchDB 的新手。我不知道我是否可以限制角色可以从文档中读取的字段。如果可以,这是使用 CouchDB 的正确方法吗?

例如,如果我有这样的文件:

以及以下角色:

我希望管理员角色可以读取所有字段,而开发人员只能读取电子邮件和电话。我怎样才能做到这一点?使用验证功能?

0 投票
1 回答
64 浏览

couchdb - 自定义 CouchDb SSL 证书验证

我正在尝试将 CouchDB 配置为在通过 IP 访问的 IoT 设备上使用 SSL。我试图避免将网络服务器添加为反向代理,以尽量保持轻量级,而是使用 CouchDb 的内置 SSL 功能。

我遇到的问题是复制将无法通过通用名称证书验证,因为我们是通过 IP 访问的。我希望使用自定义验证功能来检查证书指纹。看起来verify_fun与类似ssl_verify_fingerprint 函数的组合可能是我正在寻找的,但我无法弄清楚如何在配置文件中使用它。如何更新此配置行以使用自定义功能?

verify_fun = {Module, VerifyFun}

0 投票
1 回答
573 浏览

couchdb - 有没有办法获得特定的修订?

我正在学习 CouchDB,我刚刚读到在解决冲突时,CouchDB 保留了文档的两个修订版本,获胜的一个和冲突的一个。CouchDB 是否保留同一文档的多个修订版?如何获得特定的修订?

0 投票
1 回答
28 浏览

nosql - 视图是重复数据还是只创建索引?

我正在学习 CouchDB,但我不明白:当我创建视图时,视图是复制emit函数内部的数据还是仅基于它创建一个新索引?

例如,假设我有一个包含如下文档的数据库:

我的观点是这样的:

第一次执行视图时,CouchDB 会创建每个文档(发出的字段)和视图索引的副本吗?还是只会创建一个索引?