新文档验证:CouchDB
New Document Validation: CouchDB
有人能告诉我为什么这可以作为新的文档验证功能吗:
{
"_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'
在下面的代码中不是'recognised',虽然代码是
有效:
{
"_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.def\");
}
}"
}
回复是:
"Save failed: Document must have a abc.def"
我的新文档符合有效条目的条件并包含 "abc.def":"some text".
我试过包括:typeof (!newDoc[field]) === 'object'
在 if 语句中但无法正确设置 javascript
我相信答案很简单。
我找到了这个问题的答案here。(在
在文章的 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 }"
}
有人能告诉我为什么这可以作为新的文档验证功能吗:
{
"_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'
在下面的代码中不是'recognised',虽然代码是
有效:
{
"_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.def\");
}
}"
}
回复是:
"Save failed: Document must have a abc.def"
我的新文档符合有效条目的条件并包含 "abc.def":"some text".
我试过包括:typeof (!newDoc[field]) === 'object'
在 if 语句中但无法正确设置 javascript
我相信答案很简单。
我找到了这个问题的答案here。(在 在文章的 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 }"
}