如何确定函数中函数执行的顺序?

时间:2019-07-05 22:25:21

标签: javascript

这是我第一次尝试使用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;
 }

1 个答案:

答案 0 :(得分:0)

我对路由器不是很熟悉,但是我假设您在发布文章时正在查询api或服务器?

如果是这样,这是常见的功能,因为您正在调用异步方法,但是希望它的作用类似于同步方法。基本上,您需要使用async / await或promises来获取从异步调用返回的项目的值。

所以就像

User.findOne(query, function).then(function(response){
   var result=response.data;

//Do something with the data
});