我正在尝试为我的快速应用程序构建自定义验证器。这是
app.use(validator({
customValidators:{
isAvalible:function(userName){
console.log("userName as param = " + userName)
//if username is not present in database return True else False
var query = user.where({userName:userName})
query.findOne(function(err,user){
if(err){
console.log("error occured in findOne()")
return handleError(err)
}
if(user){
console.log("user = " + user)
if(user == null){
return true
}
else{
return false
}
}
})
console.log("returning")
return true;
}
}
}));
它的功能是检查插入注册表单的userName是否已被其他用户使用。
Query.findOne()是我相信的异步函数,因此上面的函数在“返回”之后立即记录“userName”并立即记录。它甚至可以输入findOne()的回调,因此结果设置不正确。我怎么能解决这个问题?