async await 结合mongoose数据库操作问题 没有思路

union
  • 116

想实现密码验证功能,逻辑是从数据库获取账号,再对密码进行比较。
通过email获取账号信息,返回promise对象,然后用bcryptjs包的crypt.compare方法进行验证。最后大函数loginExamine的返回值就不知道怎么处理了,感觉我这样写不对,不知道大家怎么处理像这样的逻辑的,刚刚从express到koa,思维都要转变。我还是个小学生,希望大家能指导一下

exports.loginExamine= async (email,password)=>{
    let result= await Account.findOne({email:email},'email tel password').exec();
        return result.then((doc)=>{
            bcrypt.compare(password,doc.password).then((res)=>{
                return res
            })
        })

        
    
}
回复
阅读 2.2k
1 个回答

感觉你还没有理解async/await和Promise是怎么使用的。
我的写法如下

exports.loginExamine= async (email,password)=> {
    let doc = await Account.findOne({email:email},'email tel password').exec();
    let verifyPassword = bcrypt.compare(password,doc.password);
    return verifyPassword;
}
宣传栏