等待express-validator的自定义验证器中的异步结果

时间:2017-03-29 12:18:11

标签: node.js validation express

我正在尝试为我的快速应用程序构建自定义验证器。这是

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()的回调,因此结果设置不正确。我怎么能解决这个问题?

0 个答案:

没有答案