使用 CouchDB (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 来创建它:

截屏

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

亚历克西斯·科特

您必须创建一个新的设计文档。您需要指定适合语言字段JavaScript

然后,您必须添加validate_doc_update字段并用您的函数填充它。

作为参考,您可以查看_replicator数据库中的_design/_replicator.

选择

在命令行上,它可以完成(当心转义“):

curl -X PUT http://127.0.0.1:5984/shop/_design/product_validation -d '{"validate_doc_update": "function(newDoc, oldDoc, userCtx) { if (newDoc.type == \"product\") { if (!newDoc[\"name\"]) { throw({forbidden: \"missing name\"}) } } }"}'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章