【问题标题】:How to create a "validate document update" on CouchDB 2?如何在 CouchDB 2 上创建“验证文档更新”?
【发布时间】:2016-12-31 06:38:02
【问题描述】:

我已经阅读了我们可以在 CouchDB 上创建的验证 (validate_doc_update),但是我不知道如何创建它们。我可以通过 Fauxton 做到这一点吗?

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

是这样吗?我必须将函数声明为字符串吗?我需要一个示例(文档中有任何分步说明)。

谢谢。

【问题讨论】:

    标签: couchdb couchdb-2.0


    【解决方案1】:

    我想通了。这是一步一步的:

    通过福斯顿

    导航到:Databases -> [在此处选择您的数据库名称] -> All 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!\" });}"}'
    

    重要提示: 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 时这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多