这是我得到的错误: 错误:数据必须为字符串,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);
});
});
答案 0 :(得分:0)
在将newPassword
作为数字传递时,会出现此错误。
因此,最好将newPassword
作为字符串传递,也可以将newPassword
转换为类似newPassword.toString()
的字符串。
示例。
let newPassword = newPassword.toString();
bcrypt.hash(newPassword, numSaltRounds, function(err, hash) {});