couchdb20091120_validation
TRANSCRIPT
07.Validation & Function
2009/11/20(Fri)z.ohnami
Validationを使うことで制限できるもの
•ドキュメントの内容•ドキュメントの構造•認証
Validationが発動するタイミング
•ドキュメントを保存したとき• Replicationを実行したとき
Validationの設定の仕方
1.validate_doc_updateをデザインドキュメント内に定義する
2.validationのコードを書く
ドキュメントの内容を確認するfunction(newDoc, oldDoc, userCtx) { function unchanged(field) { if (oldDoc && toJSON(oldDoc[field]) != \ toJSON(newDoc[field])) throw({forbidden : "Field can't be changed: " + field}); } unchanged("created_at");
}
ドキュメントの構造を確認するfunction(newDoc, oldDoc, userCtx) { function require(field, message) { message = message || "Document must have a " + field; if (!newDoc[field]) throw({forbidden : message}); }; if (newDoc.type == "post") { require("title"); require("created_at"); require("body"); require("author"); } if (newDoc.type == "comment") { require("name"); require("created_at"); require("comment", "You may not leave an empty comment"); }}
認証に利用するfunction(newDoc, oldDoc, userCtx) { if (newDoc.author) { enforce(newDoc.author == userCtx.name, "You may only update documents with \ author " + userCtx.name); }}
気をつけてほしいこと
js> [] == [] false
NoSQL
11/30(Mon) 18:30~http://shibuya.pm.org/blosxom/techtalks/200911.html