Couchdb 通过每个更改通知获取更改的文档

Couchdb get the changed document with each change notification

我很确定每次在 couch 数据库中插入时,我都希望收到插入文档的通知。

像这样:

http://localhost:5058/db-name/_chnages/_view/inserted-document

我喜欢这样的回复:

{
   "id":"0552065465",
   "name":"james"
   .
   .
   .
}

每次通知重新连接到数据库以提供实际文档可能会导致性能问题。

我可以定义一个视图,return 每次更改的实际文档吗?

有 3 种可能的方法来定义是否刚刚添加了文档:

  1. 您在文档中添加了一个状态字段,其中包含新文档的特定状态。
  2. 如果修订以 1- 开头,但根据 this 如果您进行复制,它不是 100% 准确。
  3. 在更改响应中,检查文档的修订次数是否等于一个。如果是这样,则意味着它刚刚添加(最佳解决方案 IMO)

如果您想查询 _changes 端点并直接获取新插入的文档,您可以使用方法 #1 并使用仅 returns 状态为 "new" 的文档的过滤器函数。

否则,您应该使用方法 3 并在本地过滤 _changes 响应。例如:您的应用程序将接收所有更改并且仅处理修订数组计数等于 1 的文档。

正如您提到的,您想要接收文档,而不仅仅是 _id 和 _rev。为此,您只需添加查询参数:include_docs=true