问题标签 [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 投票
0 回答
188 浏览

pouchdb - PouchDB continuous replication without longpoll

Is it possible to have continuous replication without using the longpoll feature. We are going to have around 300 clients connecting to a CouchDB server proxied via a Nodejs/Express server, and I feel this is going to affect normal requests.

I wanted to know if there were any other built-in options apart from manually triggering a periodic replication within a setInterval call.

This is how I am currently triggering the replication

0 投票
1 回答
1293 浏览

couchdb-2.0 - CouchDB 视图在获取数据时超时

我在 CouchDB 中有 120k JSON 记录,我在一个设计文档下创建了 6 个视图。在访问视图时,它给了我超时错误。

(org.lightcouch.CouchDbException: << Status: 500 (Internal Server Error) {"error":"timeout","re​​ason":"无法在合理的时间内处理请求。"})

CouchDB 安装在具有 8 个内核和 27 GB RAM 的 Linux 环境中。

我已经设置了 os_process_timeout=5000000 但仍然得到同样的错误。有什么办法可以避免这个超时错误?

我在 Fauxton Web Console 上得到了同样的结果。

0 投票
1 回答
57 浏览

mapreduce - 获取每个客户的总发票

我有一个数据库,其中有客户(customerId、firstName、lastName、phoneNo、eMail)和发票(invoiceId、invoiceDate、customerId)等文档。

我想在视图中获取每个客户的发票总和。我目前正在使用 Fauxton 2.0。

我目前的看法是:

但我想添加某种减少功能,它可以给我发票的总和。

谢谢。

0 投票
1 回答
98 浏览

couchdb - Couchdb 集群写入行为

我在集群设置中有一个 couchdb。3 个节点,所有节点上的所有分片,W = 2。我们有代码在 couchdb 中创建一个文档并从视图中读取它。但是,视图间歇性地没有返回相应的数据。我们直接检查couchdb后数据就在那里。所以,我的问题是为什么第三个节点需要这么长时间来写入一个值,我应该期望写入延迟多长时间?

提前致谢。

0 投票
2 回答
66 浏览

javascript - 从数据库中获取价值到不同的数据库

我正在研究一个 CouchDB 用例,其中有 3 个数据库,其中有客户、发票(包括一系列 invoiceLines)和项目。在 invoiceLines 数组中,我目前有这个

然后我想从我的项目数据库中获取价格并放入 totalPrice 值,它当前为空。是否可以选择从 items db 中的 itemId 获取 itemPrice?

希望有人可以提供帮助,如果这是一个简单的问题,我很抱歉,但我还是 CouchDB 和 NoSQL 的新手。

0 投票
1 回答
904 浏览

couchdb - 为什么有两种更新文档的方法?

作为一名 CouchDB 初学者,我很难理解如何更新文档。

当我阅读文档时,我发现这让我很困惑:

1) 更新现有文档

要更新现有文档,您必须在 _rev 参数中指定当前修订号。

来源:第 10.4.1 章 /db/doc

2) 更新函数

更新处理程序是客户端可以请求调用将创建或更新文档的服务器端逻辑的函数。

来源:第 6.1.4 章设计文档

您能告诉我您更喜欢哪种方式来更新您的文件吗?


编辑1:

假设数据结构只是一个car包含一些基本字段的简单文档。

现在发生了owner变化,你还会使用选项 1 吗?选项 1 有很大的缺点,因为我不能只编辑一个字段。我需要先检索每个字段,只编辑owner字段,然后发回整个文档。我刚试过,我发现这很啰嗦。嗯……

0 投票
1 回答
243 浏览

couchdb - 多个 pouchdb 与单个 pouchdb

我创建了带有多个数据库的 couchdb,用于我的 ionic 3 应用程序。此外,在将它与 pouchdb 集成以进行客户端同步后,我为每个 db 创建了单独的 pouchdb。总共 5 个 pouchdb。我的问题

  1. 由于没有,在客户端存储多个 pouchdb 是否是个好主意。通过同步 pouchdbs 创建的 http 连接数。或者我应该将所有 Couchdb 数据库放在一个数据库中,并使用类型字段来分隔文档。然后只需要在客户端创建和同步一个 pouchdb。

  2. 同样使用 pouchdb-authenticaion 插件,身份验证数据仅对调用注册/登录方法的数据库有效。访问其他数据库返回未经身份验证。

0 投票
2 回答
270 浏览

api - 在 CouchDB 的 Fauxton 上看不到 API 按钮

嗨,我在 cocuhDB 的 fauxton 上看不到 API 按钮,你知道为什么会这样吗?

0 投票
0 回答
130 浏览

couchdb - CouchDB/PouchDB 是否适合我的项目?欢迎任何建议

我已经阅读了很多关于CouchDB(和PouchDB)的内容,但我仍然不确定对于我的项目来说最好的选择是什么。

根据我目前所读到的内容,我确实有一种可能的方法来解决我脑海中的项目,但我不确定性能等问题,并且很想获得一些见解。或者也许有更好的地方来问这个问题?如果是这样,请告诉我!(已经尝试过他们的 IRC 频道和邮件列表,但目前还没有答案)

所以该项目基本上是一个“离线优先”的移动应用程序。用户是设备安装人员。他们每天被分配几个位置和设备来安装。他们需要在建筑物周围走动并更新数据(例如,设备 X 已安装在位置 Y;或者位置 C 上的设备 B 的属性 A 已更改为 D,等等...)

有关基本数据的更多信息。

  • 有用户,他们是设备安装人员。他们需要登录应用程序。
  • 有位置,设备安装人员需要访问的所有地方。
  • 有设备,用户可以安装所有不同的设备。
  • 有待办事项,基本上是针对特定设备在特定位置为特定用户进行的计划安装。

当然,我试图简化数据,但这应该包含要点。

现在,这些是应用程序的重要特征:

  • 管理员(后端软件)可以更改用户、位置和设备。
  • Todos 可以由管理员(后端软件)计划。
  • 应用程序用户(设备安装程序)只能看到他/她自己的今天 + 1 周前的待办事项/计划。
  • 多个应用程序用户(设备安装程序)可能被分配到相同的位置和/或待办事项,因为对于大型建筑物可能有多个安装程序在工作。
  • 在使用的每个应用程序中的数据与全局数据库之间的自动同步。
  • 安全,用户 X 应该只能请求他/她自己的待办事项/计划。

考虑到这些特征,我目前有以下想法:

  • 一个包含所有用户、位置、设备、待办事项的全球“主”数据库。
  • 使用选择器对象过滤复制/同步,该选择器对象为每个用户仅复制该特定用户可访问的数据。
  • 使用 PouchDB 的 Ionic 应用程序与他/她自己的用户数据库进行完全/正常复制/同步。

我是否正确假设以下内容?

  • 使用 PouchDB 的应用程序的用户将拥有对他自己的已在服务器端过滤的用户数据库的完全读取权限?
  • 对于更新数据,我可以使用 validate_doc_update 来检查用户是否可以修改某些内容?
  • 对 PouchDB 数据库所做的任何更改都将复制到“用户”数据库中吗?
  • 然后这些更改也会从“用户”数据库复制到全局“主”数据库?
  • 对全局“主”数据库所做的任何更改都将复制到“用户”数据库,但仅在需要时(仅当该用户有新/更改(/删除)文档时)?
  • 然后这些更改也会从“用户”数据库复制到移动应用程序的 PouchDB 数据库吗?

如果这一切都成立,那么它可能非常适合这个项目。至少我是这么认为的?(如果我错了,请纠正我!)但我确实读过一些关于过滤复制的“性能”问题。假设有数百个用户(设备安装人员)(现在没有这么多,但将来可能会有)。那么,为数百个“用户”数据库运行这种过滤复制会不会有问题?我确实读过 CouchDB 2.0 和 2.1 有一个选择器对象进行过滤复制,而不是通常的 JS MapReduce,后者应该快 10 倍。但我的问题仍然是:即使对于数百个(甚至数千个)“过滤”数据库,这是否有效?我对底层算法和限制知之甚少,但我想知道对全局“主”数据库的任何更改是否需要运行昂贵的计算来确定要复制到哪些“过滤”数据库。如果确实如此……这在实践中是否重要?

请,任何建议都将受到欢迎。我也考虑过使用其他数据库。我的第一种方法实际上是使用关系数据库。但是这个应用程序的必需特性之一必须是实时同步。过去,我自己可以使用 RDBMS 中的修订字段和大量代码来处理这个问题,但我真的更喜欢像 CouchDB/PouchDB 这样优雅的东西来进行同步。这确实是一个可以让我省去很多头痛的领域。记住这一点,我有什么选择?我是否走在一条可能的正确道路上,或者性能是否会成为未来的问题?

另请注意,我还考虑过为每个用户使用单独的数据库(“每个用户一个数据库”),但我认为它可能不是最适合这个项目的,因为一些待办事项可能会分配给多个用户并且当一个用户更新时待办事项,也必须为其他用户更新。

希望一些 CouchDB 专家可以对我的问题有所了解。非常感激!

我知道可能会有一些争论,但我只对其他人的事实和专业知识感兴趣。

0 投票
1 回答
998 浏览

couchdb - 在 couchdb 上创建过滤索引

我一直在尝试按照CouchDB 2.1 文档创建过滤索引,但失败得很惨(在本节的底部有一个“使用所有可用查询参数创建索引”的示例)。

基本上,我有一堆具有不同class属性的文档(就像文档类型一样)。我正在尝试仅为具有class="File"和的文档创建索引extension="pdf"

但是,当我尝试从 Futon 创建索引时,我得到了Invalid key selector for this request错误。我是在解释文档错误还是我错过了什么?