如何在CouchDB 2上创建“验证文档更新”?

时间:2016-12-29 19:33:11

标签: couchdb couchdb-2.0

我已经阅读了我们可以在 CouchDB 上创建的验证( validate_doc_update ),但是我并没有弄清楚如何创建它们。我可以通过 Fauxton 吗?

Databases -> "mydb" -> Design Documents -> New Doc
这是这样的吗?我必须将函数声明为字符串吗?我需要一个例子(文档中有任何一步一步)。

感谢。

2 个答案:

答案 0 :(得分:5)

我想出来了。这是一步一步:

通过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!"}

答案 1 :(得分:4)

手动编写设计文档是一种选择,您只需将其作为字符串写出来,因为JSON不支持将函数写为值。 (正如你发现的那样)

但是,我强烈建议您使用其他工具来管理您的设计文档。特别是,CLI工具couchapp和相关克隆(例如:erica)允许您使用文件系统来表示您的设计文档。 (包括视图函数,验证函数等)

您可以使用验证功能编写一个普通的{{1}}文件,而不是使用fauxton /蒲团编辑器(非常快速地使用笨拙,特别是对于非平凡的函数),它可以格式化并上传到CouchDB自动完成。 (这同样适用于视图,节目/列表等)

使用这种方法更容易维护,并且在使用CouchDB时我强烈建议这样做。