2010-09-22 105 views
1

創建/更新文檔時,是否可以動態更新或更改字段?例如,在設計視圖.... validate_doc_update:couchdb設計視圖,更新文檔創建的字段

function(newDoc, oldDoc, userCtx) { 
} 

在這一功能我可以拋出類似的錯誤:

if(!newDoc.user_email && !newDoc.user_name && !newDoc.user_password){ 
    throw({forbidden : 'all fields required'}); 
} 

我的問題是如何將我重新分配領域?我試過這個:

newDoc.user_password ="changed"; 

改變了一些新的值或散列值。我的總體目標是建立一個帶有node和couchdb的用戶註冊/登錄系統,但沒有找到很好的例子。

回答

1

validate_doc_update函數不能有任何副作用,並且不能在存儲之前更改文檔。它只能阻止更新或讓它通過。這很重要,因爲該函數不僅在用戶請求更新時調用,而且在從一個CouchDB實例向另一個CouchDB實例複製更改時也會調用該函數。所以這個函數可以多次調用一個文檔。

但是,CouchDB現在支持文檔更新處理程序,它可以修改文檔甚至從頭開始構建文檔。這些可用於將非JSON輸入數據轉換爲可用文檔。您可以在CouchDB Wiki中找到一些文檔。

在構建自己的用戶註冊/登錄系統之前,我建議您查看內置的CouchDB安全功能(如果您還沒有 - 一些信息here)。他們可能對你而言不夠(例如,如果你需要電子郵件驗證或類似的東西),但也許你可以建立在他們身上。