2016-07-29 8 views
0

私はこのNodejs Expressアプリケーションを持っており、フォームフィールドが無効である場合、ただし、フォームが正しく埋められても、これらのエラーは返され、データは送信されません。私の明示的な検証は、フォームが正しく入力されていてもエラーを返します

このレジスタ

router.post('/register', function(req, res, next){ 
var name = req.body.name; 
var email = req.body.email; 
var username = req.body.username; 
var password = req.body.password; 
var password2 = req.body.password2; 

// Check for image field 
if(req.files && req.files.profileimage){ 
    console.log('Uploading File...'); 

    // File Info 
    var profileImageOriginalName = req.files.profileimage.originalname; 
    var profileImageName   = req.files.profileimage.name; 
    var profileImageMime   = req.files.profileimage.mimetype; 
    var profileImagePath   = req.file.profileimage.path; 
    var profileImageExt    = req.files.profileimage.extension; 
    var profileImageSize   = req.files.profileimage.size; 

}else { 
    // Set a Default Image 
    var profileImageName = 'noimage.png'; 
} 

// Form validation 
req.checkBody('name', 'Name is required').notEmpty(); 
req.checkBody('email', 'Email is required').notEmpty(); 
req.checkBody('email', 'Invalid Email ID').isEmail(); 
req.checkBody('username', 'Username is required').notEmpty(); 
req.checkBody('password', 'Password field is required').notEmpty(); 
req.checkBody('password2', 'Password do not match').equals(req.body.password); 

// Check for Validation errors 
var errors = req.validationErrors(); 

if(errors){ 
    res.render('register', { 
     errors: errors, 
     name: name, 
     email: email, 
     username: username, 
     password: password, 
     password2: password2 
    }); 
}else { 
    var newUser = new User({ 
     name: name, 
     email: email, 
     username: username, 
     password: password, 
     profileimage: profileImageName 
    }); 

    // Create User 
    User.createUser(newUser, function(err, user){ 
     if(err) throw err; 
     console.log(user); 
    }); 

    // Success Message 
    req.flash('success', 'You are now registered and may log in'); 

    res.location('/'); 
    res.redirect('/'); 
} 
}); 

そして、ここでのコードroute.postは私register.jadeコード

extends layout 
block content 
    h1 Register 
    p Please register using the form below 
    ul.errors 
     if errors 
      each error, i in errors 
       li.alert.alert-danger #{error.msg} 
    form(method='post', action='/users/register', enctype='multipart/form-data') 
     .form-group 
      label Name 
      input.form-control(name='name', type='text', placeholder='Enter Name') 
     .form-group 
      label Email 
      input.form-control(name='email', type='text', placeholder='Enter Email') 
     .form-group 
      label Username 
      input.form-control(name='username', type='text', placeholder='Enter Username') 
     .form-group 
      label Password 
      input.form-control(name='password', type='password', placeholder='Enter Password') 
     .form-group 
      label Confirm Password 
      input.form-control(name='password2', type='password', placeholder='Confirm Password') 
     .form-group 
      label Profile Image 
      input.form-control(name='profileimage', type='file') 
     input.btn.btn-default(name='submit', type='submit', value='Register') 

ですしてください任意のヘルプはそんなに...おかげ

+0

どのようなエラーが返されますか?検証のためにどのライブラリを使用していますか? –

+0

これらのエラーはフラッシュメッセージで返され、私はexpressバリデーターを使用します req.checkBody( 'name'、 'Name is required')。notEmpty(); req.checkBody( 'email'、 'Email is required')。notEmpty(); req.checkBody( '電子メール'、 '無効な電子メールID')。isEmail(); req.checkBody( 'ユーザー名'、 'ユーザー名が必要です')。notEmpty(); req.checkBody( 'パスワード'、 'パスワードフィールドは必須です')。notEmpty(); req.checkBody( 'password2'、 'パスワードが一致しません')。equals(req.body.password); –

+0

Em、何が間違っているかをコンソールに記録してエラーを記録できますか? –

答えて

0
をいただければ幸いです

ボディパーサーはフォームデータに設定されたマルチパートフォーム属性では機能しませんが、代わりにurlencodedに設定されています。これはこの

です
<form action="/register" method="post" multipart="urlencoded"></form> 

あなたは良いはずです!あなたのお時間をありがとうございました。祝福を受けてください

関連する問題