Javascript bcrypt.compare始终返回false

Javascript bcrypt.compare始终返回false,javascript,node.js,bcrypt,Javascript,Node.js,Bcrypt,我正在尝试为我的表单创建登录身份验证。我会记录密码以检查我是否做错了什么,但似乎什么都没用。 谢谢 当bcrypt.compare将数据库的结果与字符串密码进行比较时,它总是返回false passport.use(new LocalStrategy( function (username, password, done) { User.getUserById(username, function (err, user) {

我正在尝试为我的表单创建登录身份验证。我会记录密码以检查我是否做错了什么,但似乎什么都没用。 谢谢 当bcrypt.compare将数据库的结果与字符串密码进行比较时,它总是返回false

passport.use(new LocalStrategy(
            function (username, password, done) {
                User.getUserById(username, function (err, user) {
                    if (!user.length) {
                        return done(null, false, { message: 'Invalid Credentials! Please try again.' });
                    }
                    else {
              
                        bcrypt.compare(password, user[0].password, function (err, res) {
                             return console.log(res)
                            if (err) return done(err);
                            if (res == true) {
                                User.getUserType(username, function (err, res1) {
                                    return done(null, res1[0]);
                                });
                            }
                            else {
    //                          return done(null, false, { message: 'Invalid Credentials! Please try again.' });
                                return console.log("thank you, i see error")
                            }
                        });
                    }
    
    
    
    
                });
            }));

因此,return console.log(res)总是给出false。有什么解决方案吗?

您的“getUserById”函数是否返回用户数组?您使用的是
mongoose
还是
MongoDB
驱动程序?因为
getUserById
不是一个函数,您可能是指
findById
@matrixersp我正在使用MySQLDB@Eduardo这意味着在数据库中的用户名和密码的数组集合中返回相应的密码,然后进行验证比较。请检查是否安装了bcrypt而不是bcryptjs