GraphQL-мутация для регистрации пользователей не работает с jwt - PullRequest
0 голосов
/ 15 июня 2019

Я следую этому учебнику Робина Виеруха

При реализации регистрации пользователя с использованием jwt с GraphQL я не могу предоставить значения с помощью GraphQL Mutation

Server.js

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

models / user.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
  }
}

Как вы можете видеть, когда я набираю, я должен видеть, что имя пользователя, пароль и адрес электронной почты заполняются автоматически.Или, возможно, у меня неправильный формат мутаций.

Пожалуйста, исправьте, где я ошибаюсь.

1 Ответ

0 голосов
/ 16 июня 2019
mutation($email: String!, $username: String!, $password: String!){
    signUp(email: $email, username: $username, password: $password){ 
        token 
    }
}
...