类型错误:无法通过注册读取未定义(读取"电子邮件")的属性



我的if有问题。这是我的代码:'

app.post('/register', redirectHome, async (req, res, next)=>{
try{
const email = req.body.email;
let password = req.body.password;
emaildb = await db.getUserByEmail(email);
const isValidEmail = compareSync(email, emaildb.email);

if(isValidEmail){
err_msg = 'registration done';
return res.render('register.ejs', {err_msg: err_msg});

}
else{
err_msg = 'User already exists!';
return res.render('register.ejs', {err_msg: err_msg});
}

比较可能有问题,因为当我写existing in db邮件时,我看到"User already exists!"当我在邮件中写"不存在"时,我看到"用户已经存在"。所以我的if条件不能很好地工作。

考虑这样一种情况:给定的电子邮件没有用户,其emaildb为空或未定义。然后当你调用函数compareSync(email, emaildb.email)时,这里是emaildb。Email是未定义的,因此您无法比较Email和emaildb。无法读取未定义的属性,同时返回false。

try{
const email = req.body.email;
let password = req.body.password;

emaildb = await db.getUserByEmail(email);

if(!emaildb){
// do your work since no user exist with given email
// return
}
else{
err_msg = 'User already exists!';
return res.render('register.ejs', {err_msg: err_msg});
}

最新更新