我是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字符串或多个轮数”
答案 0 :(得分:1)
User.updatePassword
仅接受2个参数,第一个为密码。您正在用3调用它。问题是您正在提供一个密码对象({ id, newPassword, oldPassword }
),而bcrypt不喜欢这样