尝试使用Bcrypt-nodejs将加密密码存储在Postgres数据库中,当我们运行代码或运行测试时,我们会收到错误'未处理拒绝没有给出回调函数'。
我们无法找到任何可行的示例,并想知道是否有其他人在努力解决此问题并找到了解决方案?
这是我们模型中的代码:
'use strict';
var bcrypt = require('bcrypt-nodejs');
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
email: DataTypes.STRING,
password_digest: DataTypes.STRING,
password: {
type: DataTypes.VIRTUAL,
allowNull: false,
validate: {
notEmpty: true
}
},
password_confirmation: {
type: DataTypes.VIRTUAL
}
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
}
}
});
var hasSecurePassword = function(user, options, callback) {
if (user.password != user.password_confirmation) {
throw new Error("Password confirmation doesn't match Password");
}
bcrypt.hash(user.get('password'), 10, function(err, hash) {
if (err) { return callback(err); }
user.set('password_digest', hash);
return callback(null, options);
});
};
User.beforeCreate(function(user, options, callback) {
user.email = user.email.toLowerCase();
if (user.password) {
hasSecurePassword(user, options, callback);
} else {
return callback(null, options); }
});
return User;
};

答案 0 :(得分:1)
您应该使用bcrypt
而不是bcrypt-nodejs
。