【问题标题】:Couchdb get the changed document with each change notificationCouchdb 通过每个更改通知获取更改的文档
【发布时间】:2017-10-04 11:36:51
【问题描述】:

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

类似这样的:

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

我喜欢这样的响应:

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

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

我可以定义一个视图,通过每次更改返回实际文档吗?

【问题讨论】:

  • 明确一点,您只想接收来自新文档插入的更改?或者,您想查看特定文档的更改?
  • @Alexis Côté:我想要插入的DOCUMENT。不是插入文档的Idrev

标签: view couchdb change-notification


【解决方案1】:

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

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

如果要查询_changes端点,直接获取新插入的文档,可以使用方法#1,使用过滤函数,只返回status="new"的文档。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多