2015-06-12 120 views
0

所以我用這個網站的例子衝突:http://guide.couchdb.org/draft/conflicts.html(使用衝突)。CouchDB合併修訂版本(衝突)

現在有兩個修訂版本,CouchDB用自己的算法決定使用哪個版本,但是我想保留兩個版本併合並它們。

作爲一個例子:我得到電話號碼:111和名稱:朱上數據庫甲和PhoneNumber:222和名稱:朱上數據庫B。 是否有可能創建一個新的文檔來保存舊版本和新版本的所有信息? 或者像「NewPhonenumber:222」這樣的新字段,其他字段的數字:111和名稱:Jules?

我只是想保持兩個修訂版不管如何。

我試圖寫一個View函數,但我只是不知道如何從衝突的數據庫中獲取數據。

function(doc) { 
if(doc._conflicts) 
emit(doc._id, doc); 
emit(doc._id, {oldNumber: doc.phonenumber, newNumber: doc.phonenumber, name: doc.name}); 
} 

如何將oldNumber:doc.phonenumber替換爲舊版本的編號?

謝謝!

+0

這可能值得你看看:https://github.com/glynnbird/deconflict –

回答

0

屬性doc._conflicts包含一個或多個衝突的文檔修訂 - 您必須迭代列表並獲取所需的值。

如果您在視圖中執行此操作,您的衝突解決將永遠不會被存儲。您必須將解析的文檔版本作爲CouchDB的新版本發送。

通過使用查詢參數?conflicts=true(更多在CouchDB documentation)並將您的決定存儲爲新版本,您可以通過其衝突請求文檔。