2012-07-26 43 views
6

我需要獲取文檔,更改/插入/刪除一些字段並將其放回。更新nano中的CouchDB文檔

「put」操作需要當前文檔的修訂版本,但是在nano中我找不到任何將修訂作爲參數並將文檔重新插入數據庫的函數。

我該如何用nano做到這一點?

回答

7

注意:這是一般算法,它不是特定於任何庫,因爲nano's insert()方法不提供任何自動更新文檔的功能。

獲取文檔,保存當前修訂版,應用更改並嘗試使用保存的修訂版號發送文檔。

確保處理可能的409個衝突響應,這些響應在文檔被更改時發生。

在這種情況下,您應該重新獲取文檔,保存修訂版本號,重新應用您的更改,然後嘗試使用新修訂版再次發送。

因此,這裏的算法:

  1. 獲取文件
  2. 保存_rev
  3. 應用更改
  4. 嘗試與保存_rev
  5. 轉到發送更新的文檔中的情況下,第1步a 409

結帳CouchDB HTTP Document API's PUT section和CouchDB的Replication and Conflicts維基頁面瞭解更多關於此事的信息。你也可以找到How To Update A Document With Nano (The CouchDB Client for Node.js)有幫助。

+0

我知道我需要修訂。問題是在納米中帶有「修訂」參數的功能。正確的答案,但在另一個問題。 – DSblizzard 2012-07-26 07:54:19

+1

即使你的問題是正確的答案。請閱讀[nano的Document API](https://github.com/dscape/nano#document-functions)文檔。只有一個'inser()'方法,這意味着您必須在要插入的文檔上設置正確的修訂版本。 – 2012-07-26 07:58:17

+0

你能告訴我你的代碼嗎? – DSblizzard 2012-07-26 08:00:15