2014-06-17 31 views
0

在TAMA實現中,我遇到了Couchdb問題。 (版本1.2.0),CouchDB問題

我們使用命名文件,以保持應用程序中的唯一約束邏輯。 (命名文件:其_id是用戶定義的,而產生的不沙發)

我們使用REST API添加文件到CouchDB的,在這裏我們發現了奇怪的行爲:

當我們試圖重新創建文件使用過去刪除的HTTP PUT(由於代碼中的錯誤),文檔不是第一次創建的。

HTTP Put - Returns HTTP 200, but doc is not saved in couchdb. 
Again trying the same request, 
HTTP Put - Returns HTTP 200 and adds the doc in database. 

HTTP PUT請求需要被髮送兩次,以創建並保存文檔。

我已籤,上面的錯誤是可重複的已刪除文檔,即對GET _id的響應{「錯誤」:「NOT_FOUND」,「原因」:「刪除」}。

這看起來像在CouchDB中給我的錯誤,你可以請讓我們知道,如果你能想到可能發生上述錯誤以及任何可能的解決方法/解決方案,任何方案的?

+0

您是否嘗試過使用較新版本的CouchDb? – TheDude

+0

我也看過這個,看起來很奇怪。只有壓實後纔會發生。 –

回答

1

CouchDB中有一個內置的機制,以確保您不會覆蓋同一文檔別人。

如果您輸入任何現有文檔,則必須伴隨此過程使用當前的doc._rev值,以便couchdb可以確認您正在更新的文檔是基於數據庫中的最新版本。

我還沒有遇到這種情況下的刪除,但它對我來說是有道理的,即couchdb應該不允許你覆蓋已刪除的文件,因爲假設應該是,你只是不知道刪除。

你有沒有試過,如果你可以將其添加到新文檔訪問已刪除的文件,如果這樣修改,是否,你可以在第一次通話中PUT成功嗎?

+0

謝謝, 但我不能被刪除的文檔(很久以前刪除)的_rev ... 有什麼辦法,我可以到那裏_revs ... – user3748501