这是我第一次尝试使用javascript,我正在尝试验证电子邮件是否已存在于数据库中。 但是在我的查找查询之前,“ if”语句正在工作。 如果您有更好的方法,请随时分享。 谢谢您的宝贵时间。
router.post('/register',[
check('name').not().isEmpty(),
check('dob').not().isEmpty(),
check('gender').not().isEmpty(),
check('email').not().isEmpty(),
check('email').isEmail(),
check('username').not().isEmpty(),
check('password').not().isEmpty(),
check('password2').not().isEmpty()],function(req,res){
const name = req.body.name;
const dob = req.body.dob;
const gender = req.body.gender;
const email = req.body.email;
const username = req.body.username;
const password = req.body.password;
var temp;
var query = {email: email}
User.findOne(query,function(err,user){
if(err)
{
message: err.message;
return;
}
if(user)
{
temp=user.email;
}
});
//THIS IS CHECKING temp BEFORE user CHANGES THE VALUE OF temp
if(temp !== null)
{
req.flash('danger',"Email already exists.");
res.redirect('/users/register');
return;
}
答案 0 :(得分:0)
我对路由器不是很熟悉,但是我假设您在发布文章时正在查询api或服务器?
如果是这样,这是常见的功能,因为您正在调用异步方法,但是希望它的作用类似于同步方法。基本上,您需要使用async / await或promises来获取从异步调用返回的项目的值。
所以就像
User.findOne(query, function).then(function(response){
var result=response.data;
//Do something with the data
});