2015-05-18 53 views
2

我刪除了一個具有特定ID的文檔,現在我想創建一個具有相同ID的新文檔。我不能使用不同的ID創建它,因爲我使用我的ID來「存儲對象信息」,順便說一句,如果這是很好的做法。例如我的ID是這樣的:如何真正刪除pouchDb中的文檔?

其存儲項目的文檔:p0

其存儲從項目「P0」一個工人的文檔:p0/w0

其中存儲第二工人從項目的文檔「P0」:p0/w1

等。

所以例如,而不是添加屬性「專案編號」一個工人的文檔,我用它的ID 來存儲這個信息,這就是我所說的「使用ID來存儲對象信息」。然後,當我需要項目'p0'中的工作人員時,我請求收納以'p0'開頭的所有文檔id。然後我過濾我的結果,只獲得與工作人員id正則表達式匹配的id(p[0-9]+\/w[0-9]+),然後對這些id執行第二次請求,包括文檔。

所以我錯誤地刪除了我的文檔'p0',我想再次創建它,該怎麼辦?我的方法處理我的文檔是否正確?

+0

你想恢復'p0'或者創建擁有'p0'作爲密鑰生成新的整個項目? – acdcjunior

+0

我想恢復p0,如果它不可能,那麼只需使用p0 id創建一個新文檔。 – sylvain1264

回答

2

假設您未啓用自動壓縮或致電compact(),您隨時可以恢復PouchDB中的任何文檔修訂。

遺憾的是沒有插件,使這個簡單,但基本上你需要的選項{revs: true, open_revs: 'all'}get()文件,然後你會得到一個名爲_revisions的對象,描述整個文檔的歷史,從您可以恢復丟失的修訂。例如。如果對象是:

{_revisions: {start: 3, ids: ['x', 'y', 'z']}} 

然後,修訂版ID是'1-z''2-y',和'3-x',然後可以通過get()取得與例如荷蘭國際集團{rev: '1-x'}

有更詳細的解釋在這裏:http://garmoncheg.blogspot.com/2013/11/couchdb-restoring-deletedupdated.html