使用CouchDB创建验证(Fauxton)

时间:2018-04-28 15:16:04

标签: couchdb couchdb-2.0 fauxton

我在CouchDB数据库中以下列方式存储产品:

{
  "_id": "1ce330a867a803fd10082c4513000fe5",
  "_rev": "4-a5eae6f790ea8b9cedea53db50a13fef",
  "type": "Product",
  "name": "Apple",
  "price": 1
}

我想创建一个验证,以确保每个包含type Product的新文档都包含字段name。我找到的唯一文档是http://guide.couchdb.org/draft/validation.html在阅读之后我写了/复制了这个验证:

function(newDoc, oldDoc, userCtx) {
  function require(field, message) {
    message = message || "Document must have a " + field;
    if (!newDoc[field]) throw({forbidden : message});
  }

  if (newDoc.type == "Product") {
    require("name");
  }
}

比我使用Fauxton创建它:

Screencast

但它不起作用。我可以在没有name字段的情况下创建这样的文档。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您必须创建一个新的设计文档。您需要指定语言字段,在您的案例中为JavaScript

然后,您必须添加 validate_doc_update 字段并将其填入您的函数。

作为参考,您可以查看_replicator的{​​{1}}数据库。

替代

在命令行上可以完成(谨防转义“):

_design/_replicator