2016-12-29 71 views
1

我已閱讀關於驗證(validate_doc_update),我們可以在上創建CouchDB,但是我沒有弄清楚如何創建它們。我可以通過Fauxton嗎?如何在CouchDB 2上創建「驗證文檔更新」?

Databases -> "mydb" -> Design Documents -> New Doc 

是這樣嗎?我必須將函數聲明爲字符串嗎?我需要一個例子(文檔中有一步一步的介紹)。

感謝。

回答

2

我想通了。這裏是一步一步:

通過Fauxton

導航到:數據庫 - > [在此選擇你的數據庫名稱] - >所有文件 - >新建文件,然後填寫上去的文字使用下面的JSON樣板所需的驗證區域,然後單擊保存

{ 
    "_id": "_design/my_validation_name", 
    "validate_doc_update": "function(newDoc, oldDoc, userCtx) {throw({forbidden : 'not able now!'});}" 
} 

通過捲曲

curl -X PUT http://127.0.0.1:5984/my_database/_design/my_validation_name -d '{"validate_doc_update": "function(newDoc, oldDoc, userCtx) { throw({forbidden: \"not able now!\" });}"}' 

重要:的的DocID必須由前綴「_design /」和功能的關鍵必須是「validate_doc_update」。請注意函數作爲字符串。

驗證組之後,如果我們試圖創建一個文檔,你必須「現在不能!」看到錯誤..

curl -X PUT http://127.0.0.1:5984/my_database/foo -d '{"foo" : "bar"}' 
# {"error":"forbidden","reason":"not able now!"} 
2

手工編寫設計文檔是一種選擇,你只需把它寫作爲字符串出來,因爲JSON不支持將值寫入函數。 (如你所發現的)

但是,我強烈建議使用其他工具來管理你的設計文檔。特別是,CLI工具couchapp和相關克隆(例如:erica)允許您使用文件系統來表示您的設計文檔。 (包括視圖函數,驗證函數等)

而不是使用fauxton/futon編輯器(它很快變得笨拙,特別是對於非平凡的函數),您可以使用驗證函數編寫一個普通的.js文件,並且它可以被格式化並自動上傳到CouchDB。 (這同樣適用於視圖,演出/列表等)

使用這種方法更容易和更安全地維護,而且我強烈建議在使用CouchDB時強烈建議。