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-
开头,但根据 this 如果您进行复制,它不是 100% 准确。
- 在更改响应中,检查文档的修订次数是否等于一个。如果是这样,则意味着它刚刚添加(最佳解决方案 IMO)
如果您想查询 _changes 端点并直接获取新插入的文档,您可以使用方法 #1 并使用仅 returns 状态为 "new" 的文档的过滤器函数。
否则,您应该使用方法 3 并在本地过滤 _changes 响应。例如:您的应用程序将接收所有更改并且仅处理修订数组计数等于 1 的文档。
正如您提到的,您想要接收文档,而不仅仅是 _id 和 _rev。为此,您只需添加查询参数:include_docs=true
我很确定每次在 couch 数据库中插入时,我都希望收到插入文档的通知。
像这样:
http://localhost:5058/db-name/_chnages/_view/inserted-document
我喜欢这样的回复:
{
"id":"0552065465",
"name":"james"
.
.
.
}
每次通知重新连接到数据库以提供实际文档可能会导致性能问题。
我可以定义一个视图,return 每次更改的实际文档吗?
有 3 种可能的方法来定义是否刚刚添加了文档:
- 您在文档中添加了一个状态字段,其中包含新文档的特定状态。
- 如果修订以
1-
开头,但根据 this 如果您进行复制,它不是 100% 准确。 - 在更改响应中,检查文档的修订次数是否等于一个。如果是这样,则意味着它刚刚添加(最佳解决方案 IMO)
如果您想查询 _changes 端点并直接获取新插入的文档,您可以使用方法 #1 并使用仅 returns 状态为 "new" 的文档的过滤器函数。
否则,您应该使用方法 3 并在本地过滤 _changes 响应。例如:您的应用程序将接收所有更改并且仅处理修订数组计数等于 1 的文档。
正如您提到的,您想要接收文档,而不仅仅是 _id 和 _rev。为此,您只需添加查询参数:include_docs=true