用户注册的 GraphQL 突变不适用于 jwt



我正在遵循Robin Wieruch的本教程

在使用 jwt 和 GraphQL 实现用户注册时,我无法通过 GraphQL Mutation 提供值

服务器.js

const server = new ApolloServer({
  typeDefs: gql(typeDefs),
  resolvers,
  context: { db },
  secret: process.env.SECRET,
});

模型/用户.js

export default (sequelize, DataTypes) => {
  const User = sequelize.define('user', {
    id: {
      type: DataTypes.INTEGER,
      primaryKey: true,
      autoIncrement: true,
    },
    username: {
      type: DataTypes.STRING,
      unique: true,
      allowNull: false,
     },
    password: {
      type: DataTypes.STRING,
      allowNull: false,
      validate: {
      notempty: true,
     len: [8],
     },
    },
   email: {
      type: DataTypes.STRING,
      unique: true,
      allowNull: false,
      validate:{
      isEmail: true,
    },
  },
  createdAt: {
  },
   createdAt: {
     type: DataTypes.DATE,
     allowNull: true
   },
   updatedAt:  {
     type: DataTypes.DATE,
     allowNull: true
   },
   deleted_at: {
     type: DataTypes.DATE,
     allowNull: true
       }
     },
     {
       freezeTableName: true,
     });
     User.beforeCreate( async user => {
       user.password = await user.generatePasswordHash();
     });
     User.prototype.generatePasswordHash = async function() {
       const saltRounds = 10;
       return await bcrypt.hash(this.password, saltRounds);
     };
     return User;
   }; 

图式

type Mutation {
signUp(username: String!, email: String!, password: String!): Token!

}

  type Token {
    token: String!
  }

解析 器

signUp: async(
        parent,
        { username, password, email},
        {db, secret },) => {
            const user =  await db.user.create({
              username,
              password,
              email,
            });
           return { token: createToken(user, secret, '30m')};
        },


我目前坚持使用下面的 GraphiQL 突变:


mutation($username: String!, $password: String!, $email: String!){
  signUp(username: $username, password: $password, email: $email){
  u
  }
}

如您所见,当我输入u时,我应该看到用户名,密码和电子邮件自动填充。或者可能是我的突变格式不正确。

请纠正,我错了。

mutation($email: String!, $username: String!, $password: String!){
    signUp(email: $email, username: $username, password: $password){ 
        token 
    }
}

最新更新