2017-06-01 14 views
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(); 
    } 
}); 

私は間違ってこれを修正する方法を教えてください。ありがとう!

+2

正確には動作しません。注意: 'app.get( '*')' –

+0

ではなく 'app.use()'をミドルウェアに使うべきです。 'app.get()'を 'app.use()'に変更しました。ありがとう! –

答えて

0

上記Julien Klepatchのように、私はapp.use()を使用する必要があります。私がそれを変更したとき、すべての問題は解決されました。

関連する問題