2017-10-04 72 views
0

我很確定我希望通過插入的文檔通過沙發數據庫中的每個插入通知。Couchdb獲取每個更改通知的更改文檔

是這樣的:

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

而且我喜歡的反應是類似以下內容:

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

重新連接到數據庫的每個通知給實際的文件可能會導致性能問題。

我可以定義一個視圖,通過每次更改返回實際文檔嗎?

+0

只是要清楚,您希望僅接受來自新文檔插入的更改?或者,您想要查看特定文檔的更改嗎? –

+0

@AlexisCôté:我想要插入「DOCUMENT」。而不是插入文檔的「Id」和「rev」。 – Mohsen

回答

2

有3種可能的方式,如果剛剛添加的文檔定義:

  1. 你的狀態字段添加到您的文檔與新文檔特定的狀態。
  2. 如果修訂以1-開頭,但如果您執行復制,則根據this它不是100%準確。
  3. 在更改響應中,檢查文檔的修訂版本號是否等於1。如果是這樣,這意味着它只是加入(最佳解決方案IMO)

如果你要查詢的_changes終點,並直接獲得新插入的文件,您可以使用方法#1和使用過濾功能,只有返回status =「new」的文檔。

否則,您應該使用方法#3並在本地過濾_changes響應。例如:您的應用程序將收到所有更改,並且只處理修訂版本計數等於1的文檔。

而且正如您所提到的,您希望接收文檔,而不僅僅是_id和_rev。爲此,您可以簡單地添加查詢參數:include_docs=true