2011-04-27 67 views
2

遷移到CouchDB時丟失的一件事是能夠爲字段設置默認值。例如,在SQL數據庫中,可以有一個名爲date的字段,默認爲now()。是否有可能在CouchDB中做類似的事情?是否可以將字段添加到CouchDB驗證功能中的文檔?

從我所知道的情況來看,在每次創建和更新操作時運行的唯一一段代碼是設計文檔的validate_doc_update方法。但是,當我們通過創建虛擬驗證來測試它時,我們無法實現它。這裏有一個簡單的驗證功能,試圖設置字段newDoc.foo,但它永遠不會被保存。

function(newDoc, oldDoc, userCtr) { 
    newDoc.foo = "bar!"; 
} 

我們已經檢查和驗證,該方法validate_doc_update獲取調用,所以纔出現,如果有一種方法來自動字段添加到CouchDB文檔,使用驗證功能不是要走的路。還有其他建議嗎?

回答

3

當您通過視圖查看文檔時,您可以使用某些查看邏輯來應用默認值。

您可以在編寫代碼後(也可能在後續更改後)應用update handler,但每次都需要其他調用才能調用它。

我可能會解決這個問題,方法是在插入文檔之前創建要作爲對象插入的文檔,並在其中應用默認值,以便您寫入CouchDB的內容已經正確。

+1

在最近的CouchDB版本中[不允許在視圖中修改文檔](http://web.archiveorange.com/archive/v/oW6DzLPEoEfysNJMyaLk)。 – 2011-04-29 17:36:14

+0

感謝您提供更新處理程序的提示。精心設計的更新處理程序可以完全像創建和更新文檔的正常機制,同時還添加其他字段(如創建日期)。另外,通過將它們放入更新函數中,它們在複製後不會再次運行。 – Pridkett 2011-05-12 17:04:03

相關問題