【发布时间】:2016-07-29 20:24:28
【问题描述】:
我已经为此奋斗了一段时间,我有这个 Nodejs Express 应用程序,当表单字段无效时,我的注册表单会返回一堆验证错误,这是一件好事,但是当表单正确填写时它仍然返回这些错误并且不提交任何数据。
这是用于注册的代码 route.post
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('/');
}
});
这是我的 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')
任何帮助将不胜感激...谢谢
【问题讨论】:
-
返回什么错误?您使用什么库进行验证?
-
这些错误在 flash 消息中返回,我使用 express-validators req.checkBody('name', 'Name is required').notEmpty(); req.checkBody('电子邮件', '需要电子邮件').notEmpty(); req.checkBody('email', '无效的电子邮件 ID').isEmail(); req.checkBody('用户名', '需要用户名').notEmpty(); req.checkBody('password', '需要密码字段').notEmpty(); req.checkBody('password2', '密码不匹配').equals(req.body.password);
-
Em,您可以通过控制台记录错误以查看问题所在吗?
-
控制台上没有错误...看起来不错
-
记录
errors对象,看看为什么它不为空。
标签: javascript node.js forms express