2016-07-29 4 views
0

Ich habe seit einiger Zeit damit zu kämpfen, ich habe diese Nodejs Express App und mein Registrierungsformular gibt eine Reihe von Validierungsfehlern zurück, wenn die Formularfelder ungültig sind eine gute Sache, aber wenn das Formular ordnungsgemäß ausgefüllt ist, gibt es dennoch diese Fehler zurück und sendet keine Daten.Meine Express-Validierung gibt Fehler zurück, selbst wenn das Formular korrekt ausgefüllt wurde

Dies ist der Code route.post für Register

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('/'); 
} 
}); 

Und hier mein register.jade Code ist

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') 

Bitte jede Hilfe so sehr geschätzt werden würde ... dank

+0

Welche Fehler werden zurückgegeben? Welche Bibliothek verwenden Sie zur Validierung? –

+0

Diese Fehler werden in Flash-Nachricht zurückgegeben und ich verwende Express-Validatoren req.checkBody ('name', 'Name ist erforderlich'). NotEmpty(); req.checkBody ('E-Mail', 'E-Mail ist erforderlich'). NotEmpty(); req.checkBody ('E-Mail', 'Ungültige E-Mail-ID'). IsEmail(); req.checkBody ('Benutzername', 'Benutzername ist erforderlich'). NotEmpty(); req.checkBody ('password', 'Passwort field is required'). NotEmpty(); req.checkBody ('password2', 'Passwort stimmen nicht überein'). Equals (req.body.password); –

+0

Em, können Sie die Fehler protokollieren, um zu sehen, was falsch ist? –

Antwort

0

Body Parser funktioniert nicht mit mehrteiligen Formularattributen, die auf Formulardaten gesetzt sind, sondern stattdessen auf urlencoded gesetzt werden. Dies ist

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

damit sollte man gut sein! Danke Ihnen allen für Ihre Zeit. bleiben Sie gesegnet