2017-02-18 40 views
0

Может кто-нибудь дать мне указатель, почему это работает как новая функция проверки документа:Новая проверка документа: 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»: «некоторый текст».

Я попытался в том числе: typeof (!newDoc[field]) === 'object' внутри, если заявление, но не может получить Установите Javascript правильно

Я уверен, что ответ прост.

ответ

0

Я нашел ответ на этот вопрос here. (В разделе Добавление Validation около 2/3rds пути вниз статьи. (Роберт Ковальский 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 }" 
}