node.js と Express を使用して CRUD Web アプリを作成しています。サーバー側の検証が失敗したときにデータ入力フォームにフラッシュ メッセージを表示する方法を考えています。フラッシュ メッセージにエクスプレス フラッシュを使用しています。
検証コードが機能し、エラーが返され、フラッシュ メッセージを作成します。
var errors = validateForm(req);
if(errors){
req.flash('info',errors);
res.render('edit', {messages: req.flash('info')});
}
そして、edit.jade ファイルにメッセージを表示します。
if messages.info
p #{messages.info}
問題は、特定のオブジェクトを編集していて、URL が /edit ではなく /edit/objectID であることです。ページの get は次のようになります。
router.get('/edit/:id', function(req, res) {
var db = req.db;
var collection = db.get('mydb');
collection.find({ID: req.params.id},{},function(e,docs){
res.render('edit', {"object" : docs});
});
});
ページ ID を失うことなく、POST が送信された後にサーバー側の検証用にフラッシュ メッセージを追加することは可能ですか? 編集からのすべてのデータは必要ありません。うまくいけばエラーを検出するクライアント側の検証がありますが、サーバー側の検証エラーにより、ユーザーが去ったのと同じオブジェクトページに到達するようにしたいと思います。