簡體   English   中英

新文檔驗證: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' ,盡管該代碼有效:

{ 
  "_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM