我是graphQL的新手,我正在尝试在我的resolvers.js文件下的后端中更新用户配置文件密码,但是我坚持了一段时间,并且不断收到相同的错误消息。

javascript - 尝试更新密码(GraphQL)“数据必须是字符串,并且盐必须是盐字符串”-LMLPHP

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/

10-15 06:05