我已经阅读了我们可以在CouchDB上创建的验证( validate_doc_update ) ,但是我没有弄清楚如何创建它们。我可以通过Fauxton 来做吗?
Databases -> "mydb" -> Design Documents -> New Doc
是这样吗?我必须将函数声明为字符串吗?我需要一个例子(文档中有任何分步说明)。
谢谢。
我已经阅读了我们可以在CouchDB上创建的验证( validate_doc_update ) ,但是我没有弄清楚如何创建它们。我可以通过Fauxton 来做吗?
Databases -> "mydb" -> Design Documents -> New Doc
是这样吗?我必须将函数声明为字符串吗?我需要一个例子(文档中有任何分步说明)。
谢谢。
我想通了。这是一步一步:
通过福斯顿
导航到:Databases -> [在此处选择您的数据库名称] -> All Documents -> New Doc,然后使用下面的 JSON 样板在文本区域中填写所需的验证,然后单击Save:
{
"_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!"}
手动编写设计文档是一种选择,您只需将其写为字符串,因为 JSON 不支持将函数编写为值。(正如你所发现的)
但是,我强烈建议您使用其他工具来管理您的设计文档。特别是,CLI 工具couchapp和相关的克隆(例如:erica)允许您使用文件系统来表示您的设计文档。(包括视图函数、验证函数等)
不用使用 fauxton/futon 编辑器(它很快就会变得很笨拙,尤其是对于非平凡的函数),你可以.js
用你的验证函数编写一个纯文件,它可以被格式化并自动上传到 CouchDB。(这同样适用于视图、节目/列表等)
使用这种方法维护起来更容易、更安全,并且在使用 CouchDB 时我强烈建议这样做。