如何创建一个;“验证文档更新”;关于CouchDB 2?

如何创建一个;“验证文档更新”;关于CouchDB 2?,couchdb,couchdb-2.0,Couchdb,Couchdb 2.0,我读过关于我们可以在CouchDB上创建的验证(validate\u doc\u update),但是我不知道如何创建它们。我可以通过Fauxton做这件事吗 Databases -> "mydb" -> Design Documents -> New Doc 这是路吗?我必须将函数声明为字符串吗?我需要一个例子请(有任何一步一步的文件) 谢谢。我知道了。以下是步骤: 通过福斯顿 导航到:数据库->[在此选择您的数据库名称]->所有文档->新文档,然后使用下面的JSON样板文

我读过关于我们可以在CouchDB上创建的验证(validate\u doc\u update),但是我不知道如何创建它们。我可以通过Fauxton做这件事吗

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


谢谢。

我知道了。以下是步骤:

通过福斯顿

导航到:数据库->[在此选择您的数据库名称]->所有文档->新文档,然后使用下面的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!\" });}"}'
重要提示:文档ID的前缀必须是“\u design/”,函数的键必须是“validate\u doc\u update”。将函数记为string

在验证集之后,如果我们尝试创建文档,您必须看到错误“现在无法”


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

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

您可以使用验证函数编写一个普通的
.js
文件,然后将其格式化并自动上载到CouchDB,而不用使用fauxton/futon编辑器(这会很快变得笨拙,尤其是对于非平凡的函数)。(同样适用于视图、显示/列表等)

使用这种方法维护起来更容易、更安全,这是我在使用CouchDB时极力推荐的

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