我是graphQL的新手,我正在尝试在我的resolvers.js文件下的后端中更新用户配置文件密码,但是我坚持了一段时间,并且不断收到相同的错误消息。
resolvers.js
updatePassword: combineResolvers(
isAuthenticated,
async (parent, args, context) => {
const { id, newPassword, oldPassword } = args;
const { models, user, jwtSecret } = context;
await models.User.updatePassword(
{ id, newPassword, oldPassword },
createToken({ newPassword }, jwtSecret, API_TIMEOUTS.JWT_TOKEN),
user.emailAddress
);
return models.User.findByEmail(user.emailAddress);
}
)
Index.js(助手)
const generatePasswordHash = async password => {
const saltRounds = 10;
return bcrypt.hash(password, saltRounds);
}
User.updatePassword = async (newPassword, emailAddress) => {
const password = await generatePasswordHash(newPassword);
return User.update(
{ password, resetPasswordToken: null },
{
where: {
emailAddress
}
}
);
};
我得到的错误
“数据必须为字符串,salt必须为salt字符串或多轮”
最佳答案
User.updatePassword
仅接受2个参数,第一个为密码。您正在用3调用它。问题是您要提供一个密码({ id, newPassword, oldPassword }
)对象,而bcrypt不喜欢这样
关于javascript - 尝试更新密码(GraphQL)“数据必须是字符串,并且盐必须是盐字符串”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53943773/