gpt4 book ai didi

javascript - 密码 bcrypt 返回未定义

转载 作者:行者123 更新时间:2023-12-03 22:43:18 25 4
gpt4 key购买 nike

我正在尝试使用 bcrypt 加密密码,但是当我调用 this.setDataValue('password',hash)
由于 ValidationError (非空),返回变得未定义并且不保存,但在上面一行的 console.log 中它是散列的。
我尝试更改函数 () 的 es6 箭头函数,但正如预期的那样,我无权访问 this.setDataValue .
谁能给我一盏灯?

const { Sequelize } = require('sequelize');
const {database,username,password,host } = require('./dbcon');
const bcrypt = require('bcrypt');
const saltRounds = 10;

const sequelize = new Sequelize(database , username, password, {host:host ,dialect: 'mariadb'});

const user = sequelize.define('users',{
mail:{
type:Sequelize.STRING,
allowNull:false
},
firstName:{
type:Sequelize.STRING,
allowNull:false,
},
lastName:{
type:Sequelize.STRING,
allowNull:false,
},
password:{
type:Sequelize.STRING,
allowNull:false,
set(value) {
bcrypt.hash(value,saltRounds).then(f(hash)=>{
console.log(value,hash);
this.setDataValue('password',hash);
});

}
},
username:{
type:Sequelize.STRING,
allowNull:false,
}

})

try {
sequelize.authenticate().then(res =>{
console.log('Connection has been established successfully.');
user.sync({ force: true });
});

} catch (error) {
console.error('Unable to connect to the database:', error);
}

module.exports = {sequelize,user};

最佳答案

您可以使用 beforeCreate hook 和 bcrypt 异步方法或 instanceMethods在选项中:

const user = sequelize.define('users',{
mail:{
type:Sequelize.STRING,
allowNull:false
},
firstName:{
type:Sequelize.STRING,
allowNull:false,
},
lastName:{
type:Sequelize.STRING,
allowNull:false,
},
password:{
type:Sequelize.STRING,
allowNull:false
},
username:{
type:Sequelize.STRING,
allowNull:false,
}
}, {
instanceMethods: {
generateHash(password) {
return bcrypt.hash(password, bcrypt.genSaltSync(8));
}
}
}

})

关于javascript - 密码 bcrypt 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65442187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com