[英]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'
,盡管該代碼有效:
{
"_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\");
}
}"
}
答復是:
“保存失敗:文檔必須具有abc.def”
我的新文檔符合有效條目的條件,並且包含“ abc.def”:“某些文本”。
我嘗試過:if語句內包含typeof (!newDoc[field]) === 'object'
但無法正確設置javascript
我相信答案很簡單。
我已經找到了這個問題的答案在這里 。(在增加驗證部分的方式約2 /三分之二下來的文章。(羅伯特·科瓦爾斯基8月28日2014年))
修改后的代碼是:(希望我已正確糾正它)
{
"_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 }"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.