Javascript 新文档验证:CouchDB
有人能告诉我为什么这是一个新的文档验证功能:Javascript 新文档验证:CouchDB,javascript,validation,couchdb,document,Javascript,Validation,Couchdb,Document,有人能告诉我为什么这是一个新的文档验证功能: { "_id": "_design/must_have_field_verifier", "_rev": "14-7aa573a99ec8cb007edfe6c8dd72ba15", "validate_doc_update": "function(newDoc, oldDoc, userCtx) { function require(field, message) { message = message || \"Docu
{
"_id": "_design/must_have_field_verifier",
"_rev": "14-7aa573a99ec8cb007edfe6c8dd72ba15",
"validate_doc_update": "function(newDoc, oldDoc, userCtx) {
function require(field, message) {
message = message || \"Document must have a \" + field;
if (!newDoc[field]) throw({forbidden : message});
};
{
require(\"abc\");
}
}"
}
但是“abc.def”
在下面的代码中未被“识别”,尽管代码是
有效期:
答复是:
“保存失败:文档必须有abc.def”
我的新文档符合有效条目的条件,并包含“abc.def”:“一些文本”
我尝试过包括:typeof(!newDoc[field])==='object'
在if语句中,但无法正确设置javascript
{
"_id": "_design/verifier",
"_rev": "5-33f3ff3d650bf1594a9357af58153232",
"validate_doc_update": "function (newDoc, oldDoc, userCtx, secObj) {\n if (newDoc.type == \"xyz\"){\n if (newDoc._deleted === true) {\n return;\n }\n if (!newDoc.abc) {\n throw({forbidden: \"Document must have an abc.\"});\n }\n if (!newDoc.def) {\n throw({forbidden: \"Document must have a def.\"});\n }\n if (!newDoc.ghi) {\n throw({forbidden: \"Document must have a ghi.\"});\n }\n if (!newDoc.jkl.mno) {\n throw({forbidden: \"Document must have a jkl mno.\"});\n }\n if (!newDoc.pqr.stu) {\n throw({forbidden: \"Document must have a pqr stu.\"});\n }\n if (!newDoc.vwx.yyy) {\n throw({forbidden: \"Document must have a vwx yyy.\"});\n }\n }\n }"
}
我相信答案很简单。我已经找到了这个问题的答案 在文章的最后添加了2/3的验证部分。(由Robert Kowalski于2014年8月28日撰写) 修改后的代码是:(希望我已正确更正)
{
"_id": "_design/verifier",
"_rev": "5-33f3ff3d650bf1594a9357af58153232",
"validate_doc_update": "function (newDoc, oldDoc, userCtx, secObj) {\n if (newDoc.type == \"xyz\"){\n if (newDoc._deleted === true) {\n return;\n }\n if (!newDoc.abc) {\n throw({forbidden: \"Document must have an abc.\"});\n }\n if (!newDoc.def) {\n throw({forbidden: \"Document must have a def.\"});\n }\n if (!newDoc.ghi) {\n throw({forbidden: \"Document must have a ghi.\"});\n }\n if (!newDoc.jkl.mno) {\n throw({forbidden: \"Document must have a jkl mno.\"});\n }\n if (!newDoc.pqr.stu) {\n throw({forbidden: \"Document must have a pqr stu.\"});\n }\n if (!newDoc.vwx.yyy) {\n throw({forbidden: \"Document must have a vwx yyy.\"});\n }\n }\n }"
}