0
3つのフィールド(textfield1、textdield2、およびinput3)を持つフォームがあります。私はそれをレンダリングする。Expressのミドルウェアで古いデータフォームフィールドを送信する方法
router.get('/myform', function(req, res) {
if(!req.session.passport){
res.location('/');
res.redirect('/');
}
res.render('user/myform', {
title: 'Быстрая проверка',
user: req.session.passport.user
});
});
私はそれを検証しようとすると、いくつかのエラーが発生する可能性があります。なぜ私はエクスプレスバリデータを使用します。
router.post('/myform', function(req, res) {
var textfield1= req.body.textfield1;
var textdield2 = req.body.textdield2;
var input3 = req.body.input3;
req.checkBody('textdield1','Cant be empty!').notEmpty();
req.checkBody('textdield2 ','Cant be empty!').notEmpty();
req.checkBody('input3','Cant be empty!').notEmpty();
var errors = req.validationErrors();
if(errors){
var form = new Object();
form.textfield1 = textfield1;
form.textdield2 = textdield2;
form.input3 = req.body.input3;
res.render('user/myform',{
errors: errors,
title:"Errors here!",
form: form
});
} else { ...
すべてがうまく動作しますが、私のミドルウェアはあまり働きたくありませんでした。たとえば、これは:
app.get('*', function(req, res, next) {
if(req.isAuthenticated()){
res.locals.weauth = true;
User.getUserById(req.session.passport.user, function(err, user) {
if(err) console.log(err);
if(!user.name) res.locals.username = user.username;
else res.locals.username = user.name;
res.locals.balance = user.balance;
next();
});
} else {
res.locals.weauth = null;
next();
}
});
私は間違ってこれを修正する方法を教えてください。ありがとう!
正確には動作しません。注意: 'app.get( '*')' –
ではなく 'app.use()'をミドルウェアに使うべきです。 'app.get()'を 'app.use()'に変更しました。ありがとう! –