特定のコンテンツが CouchDB データベースのドキュメントに存在することを確認する方法を見つけようとしています。これを行う最善の方法は、「validate_doc_update」設計ドキュメントを使用することだと思いました。過去に、ユーザーがデータベースに変更を加える権限があるかどうかを確認するものを作成したので、この追加コードをそこに含めようとしました。ただし、CouchDB ではコンパイル可能なコードとして認識されず、その理由がわかりません (以下のコードを参照)。このコードをコンパイルしないようにするためにどこを台無しにしたか、または特定のフィールドが更新されたドキュメントに含まれるようにするためのより良い方法があるかどうか、誰かが知っていますか?
これは、「_design/BGdesign」と呼ばれる同じデータベース内のデザイン ドキュメントに含まれています。
function(newDoc, oldDoc, userCtx, secObj){
if ('_admin' in userCtx.roles) return; // skip anonymous in Admin Party case
if (userCtx.roles.indexOf('testAdmin') == -1) {
throw({forbidden: "Not Authorized"});
}
}
if (newDoc.artistName === undefined) {
throw({forbidden: 'Document must have a artistName'});
}
if (newDoc.currentLocation === undefined) {
throw({forbidden: 'Document must have a currentLocation'});
}
if (newDoc.dateMade === undefined) {
throw({forbidden: 'Document must have a dateMade.'});
}
if (newDoc.description === undefined) {
throw({forbidden: 'Document must have a description.'});
}
if (newDoc.name === undefined) {
throw({forbidden: 'Document must have a name.'});
}
if (newDoc.owner === undefined) {
throw({forbidden: 'Document must have an owner.'});
}
if (newDoc.tags === undefined) {
throw({forbidden: 'Document must have tags.'});
}
if (newDoc.uploaded === undefined) {
throw({forbidden: 'Document must have an uploaded date.'});
}
}