错误的isEmail"/>
在nodejs中创建注册系统时,获取未定义错误的isEmail
[抱歉,我是javascript和nodejs的新手,但是基本上我正在尝试创建一个注册系统。我已经附加了表单验证器和用户模式,但是我一直收到未定义错误的isEmail。我不确定是否有更简便的方法来检查这些条件。之前,我使用的是req.checkBody,但是我不确定如何使用它来检查某个用户是否超过给定年龄。
router.post('/register', function(req, res, next) {
var name = req.body.name;
var email = req.body.email;
var password = req.body.password;
var password2 = req.body.password2;
var bday = req.body.bday;
var birthday = moment(bday);
let errors = [];
// Form Validator
if (!name || !email || !password || !password2 || !bday) {
errors.push({ msg: 'Please fill in all required fields' });
}
if (!req.body.email.isEmail()) {
errors.push({ msg: 'Please provide an appropriate email' });
}
if (req.body.password2 != req.body.password) {
errors.push({ msg: 'Please make sure your passwords match' });
}
if (!birthday.isValid()) {
errors.push({ msg: 'Date of Birth must be in appropriate format' });
}
if (moment().diff(birthday, 'years') < 13) {
errors.push({ msg: 'User must be at least 13 years of age' });
}
if(errors.length > 0){
res.render('register', {
errors,
name,
email,
password,
password2,
bday
});
} else{
var newUser = new User({
name: name,
email: email,
password: password,
bday: bday,
});
var UserSchema = mongoose.Schema({
password: {
type: String
},
email: {
type: String
},
name: {
type: String
},
bday: {
type: String
}
});
回答如下:当您在这里查看时
if (!req.body.email.isEmail()) {
errors.push({ msg: 'Please provide an appropriate email' });
}
您正在尝试从isEmail
访问email
属性,该属性必须不存在。
要求可能看起来像什么:{ req: { body: {} } }
,如您所见,电子邮件必须为undefined
,并且undefined
不包含isEmail
属性。
您可以做的是
if (req.body.email && !req.body.email.isEmail()) {
errors.push({ msg: 'Please provide an appropriate email' });
}
在尝试访问req.body.email
之前先检查isEmail
是否存在。
更多推荐
在nodejs中创建注册系统时,获取未定义错误的isEmail
发布评论