Javascript isPasswordValid始终返回false

Javascript isPasswordValid始终返回false,javascript,node.js,express,sequelize.js,bcrypt,Javascript,Node.js,Express,Sequelize.js,Bcrypt,我试图将登录添加到我的express代码中,但它似乎总是isPassword=false,但电子邮件是true,因此我无法登录,我仍然对使用ByScript nodejs感到困惑。我认为它支持node 这是我的控制器 const{response}=require('../helpers/index'); const{users:User}=require('../models/index'); const axios=require('axios'); const config=require

我试图将登录添加到我的express代码中,但它似乎总是isPassword=false,但电子邮件是true,因此我无法登录,我仍然对使用ByScript nodejs感到困惑。我认为它支持node

这是我的控制器

const{response}=require('../helpers/index');
const{users:User}=require('../models/index');
const axios=require('axios');
const config=require('../config/config');
const jwtS=require(“../config/configJwt”)
const jwt=require('jsonwebtoken')
const Sequelize=require('Sequelize');
const{Op}=Sequelize;
const jwtSignUser=(user)=>{
连续一周=60*60*24*7
返回jwt.sign(用户,jwtS.authentication.jwtSecret{
过期天数:一周
})
}    
module.exports={
异步寄存器(req、res){
试一试{
const user=wait user.create(请求主体)
const userJson=user.toJSON()
res.send({
用户:userJson,
令牌:jwtSignUser(userJson)
})
}
捕捉(错误){
资源状态(400)。发送({
错误:错误
})
}
},
异步登录(req、res){
试一试{
const{email,password}=req.body
const user=wait user.findOne({
其中:{
电邮:电邮
}
})
如果(!用户){
返回资源状态(403)。发送({
错误:err+'登录用户信息不正确'
})
}
const isPasswordValid=wait user.comparePassword(密码)
如果(!isPasswordValid){
console.log(isPasswordValid)
返回资源状态(403)。发送({
错误:“登录密码信息不正确”
})
}
const userJson=user.toJSON()
res.send({
用户:userJson,
令牌:jwtSignUser(userJson)
})
}捕捉(错误){
资源状态(500)。发送({
错误:“尝试登录时发生错误”
})
}
} 
}
这是我的数据库模型,我认为数据库是正确的,我不需要在数据库中解析:

“严格使用”;
const Promise=require(‘蓝鸟’)
const bcrypt=promisifyAll(require(“bcrypt nodejs”))
函数hashPassword(用户、选项){
常数盐系数=8
如果(!user.changed(“密码”)){
返回
}
返回bcrypt
.genSaltAsync(盐分系数)
.then(salt=>bcrypt.hashSync(user.password,salt,null))
。然后(哈希=>{
user.setDataValue('password',hash)
})
}
module.exports=(sequelize,数据类型)=>{
const User=sequelize.define('users'{
全名:{
类型:DataTypes.STRING,
allowNull:错,
},
电邮:{
类型:DataTypes.STRING,
allowNull:错,
独一无二:没错,
},
密码:{
类型:DataTypes.STRING,
allowNull:错,
},
电话:{
类型:DataTypes.STRING,
allowNull:错,
},
}, {  
挂钩:{
beforeCreate:hashPassword,
更新前:hashPassword,
beforeSave:hashPassword
}
});
User.prototype.comparePassword=函数(密码){
返回bcrypt.compareSync(密码,this.password)
}
User.associate=(型号)=>{
User.hasMany(models.authors{
foreignKey:“用户\u id”,
onDelete:“级联”
});
};
返回用户;
};

你们能帮我解决我的问题吗,非常感谢你们的帮助?

bcrypt nodejs似乎已经过时(上次发布是5年前),也许可以尝试切换到?API非常相似,您不必为蓝鸟而烦恼。promisifyAll将尝试这样做,并会通知您,Thanks我怀疑您的代码由于promisifying而无法按预期工作,因此使用更先进的库可能会解决此问题谢谢您的回复,我解决了它,第一个原因是我使用bcrypt节点js,其中它是旧库,第二个是hooks:{beforeCreate:hashPassword,beforefupdate:hashPassword,beforeSave:hashPassword}它使我的hashPassword运行两次,所以我删除beforeSave:hashPassword,它使我的hash得到了错误的hash