2013-03-04 83 views
0

我們是Couch DB的新手,不確定如何使用文檔修訂版號。特別是,我們不確定客戶端應用程序是否應該知道此修訂版本號,以及是否必須將其每次保存請求發送回服務器以確保連續性。CouchDB - 使用文檔修訂號的正確方法?

我們的情況是,我們有一個位於CouchDB和客戶端應用程序(用Actionscript 3編寫的遊戲)之間的NodeJS服務器。遊戲世界被分解成一個網格,並且可能會在短時間內對單個圖塊進行多次更改,每個圖塊都會產生一個新的保存請求。由於不能保證兩個同時發出的請求將以特定順序到達服務器,因此我們需要確保只有在數據庫中已有的數據比數據更新時纔會保存數據塊數據。

我們正在考慮使用我們附加到每個文檔的自定義事務ID,但是我們擔心我們可能只是做錯了,或者缺少一些CouchDB的基本行爲(即「正確的方式」)

回答

5

是的,包括_rev屬性與每次保存。 From http://wiki.apache.org/couchdb/HTTP_Document_API#PUT

要更新現有文檔,還需要發出PUT請求。在這種情況下,JSON主體必須包含一個_rev屬性,它允許CouchDB知道編輯所依據的修訂版本。如果當前存儲在數據庫中的文檔修訂版不匹配,則返回409衝突錯誤。

有關衝突管理的信息,請參閱:http://guide.couchdb.org/editions/1/en/conflicts.html#working

相關問題