这是我得到的错误:错误:数据必须是字符串,salt必须是salt字符串或轮数。这是我写的代码,用于使用他们的电子邮件ID重置我的数据库中的密码。如果这不正确,谁能告诉我如何使用oracle数据库重置node js中的密码。错误在bcrypt.hash行。
下面是完整的代码:
function changePassword(email, newPassword, callback) {
var oracledb = require('oracledb');
oracledb.outFormat = oracledb.OBJECT;
oracledb.getConnection({
user : '',
password : '',
connectString : ''
},
function(err, connection) {
if (err) {
return callback(new Error(err));
}
bcrypt.hash(newPassword, numSaltRounds, function(err, hash) {
if (err) { return callback(err); }
connection.execute(
' select password as "password" = : hash, ' +
' from jsao_users ' +
' where email = :email ', [hash, email], { autoCommit: true },
function(err, result) {
if (err) {
console.log(err);
doRelease(connection);
return callback(new Error(err));
}
doRelease(connection);
callback(null, result.rowsAffected > 0);
});
});
// Note: connections should always be released when not needed
function doRelease(connection) {
connection.close(
function(err) {
if (err) {
console.error(err.message);
}
});
}
});
}
这就是我得到错误的地方:
bcrypt.hash(newPassword, numSaltRounds, function(err, hash) { //this is the line
if (err) { return callback(err); }
connection.execute(
' select password as "password" = : hash, ' +
' from jsao_users ' +
' where email = :email ', [hash, email], { autoCommit: true },
function(err, result) {
if (err) {
console.log(err);
doRelease(connection);
return callback(new Error(err));
}
doRelease(connection);
callback(null, result.rowsAffected > 0);
});
});
4条答案
按热度按时间iyzzxitl1#
当你把
newPassword
作为数字传递的时候会出现这个错误。所以,最好把newPassword
作为字符串传递,或者你可以把newPassword
转换成像newPassword.toString()
这样的字符串。例如。
fhity93d2#
我在我的用户模型中设置了数字类型的密码。哈希函数需要一个字符串作为第一个参数。设置类型为字符串会有帮助。
ua4mk5z43#
请在加密前将您的明文或
req
密码转换为字符串。pn9klfpd4#
我也收到此错误。我尝试了此方式##标题##。
我们发送的值是整数。因此这是抛出错误{“email”:“vignesh@gmail.com“,“密码”:1234 //这是整数}
所以,我已经修改了整型字符串然后错误消失{“email”:“vignesh@gmail.com“,“密码”:“1234”//这是字符串}
结论:这是预期的字符串值。