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

时间:2018-12-27 10:48:12

标签: javascript graphql

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

enter image description here

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字符串或多个轮数”

1 个答案:

答案 0 :(得分:1)

User.updatePassword仅接受2个参数,第一个为密码。您正在用3调用它。问题是您正在提供一个密码对象({ id, newPassword, oldPassword }),而bcrypt不喜欢这样