Javascript Sequelize:user.checkPassword不是函数
我正在尝试在sequelize模型中创建一个原型函数,以验证我的密码:Javascript Sequelize:user.checkPassword不是函数,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我正在尝试在sequelize模型中创建一个原型函数,以验证我的密码: const bcrypt = require('bcryptjs'); module.exports = (sequelize, DataTypes) => { const User = sequelize.define( 'User', { name: DataTypes.STRING, email: DataTypes.STRING, password: D
const bcrypt = require('bcryptjs');
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define(
'User',
{
name: DataTypes.STRING,
email: DataTypes.STRING,
password: DataTypes.VIRTUAL,
password_hash: DataTypes.STRING
},
{
hooks: {
beforeSave: async user => {
if (user.password) {
user.password_hash = await bcrypt.hash(user.password, 8);
}
}
}
}
);
**User.prototype.checkPassword = function(password) {
debugger
return bcrypt.compare(password, this.password_hash);
};**
return User;
};
但是,当我将此模型导出到控制器并尝试调用user.checkpassword时,会显示出类型错误:user.checkpassword不是一个函数:
const { User } = require('../models');
class SessionController {
async store(req, res) {
const { email, password } = req.body;
const user = User.findOne({ where: { email } });
if (!user) {
return res.status(401).json({ message: 'User not found' });
}
**if (!(await user.checkPassword(password))) {
return res.status(401).json({ message: 'Incorret password' });
}**
return res.status(200).send();
}
}
module.exports = new SessionController();
会是什么呢
我的sequelize版本是“sequelize”:“^5.21.5”User.findOne({where:{email}});
回报一个承诺。你可能是有意的
const user=wait user.findOne({where:{email}});
而不是
const user=user.findOne({where:{email}});
您尝试过使用更新的方法吗?我要看看。非常感谢。