Problema com a passagem de dados para graphql de reagir

votos
0

Eu tenho nome de usuário e senha que eu quero enviar para o backend graphql de reagir no frontend. Estou usando Apollo cliente para que

no lado meu cliente eu tenho este

const REGISTER_USER = gql`
  mutation RegisterUser($username: String!, $password: String!) {
    registerUser(username: $username, password: $password) {
      username,
      password
    }
  }
`;

E eu estou chamando-o assim

registerUser({ variables: { username: values.username, password: values.password } })

No meu servidor

const UserType = new GraphQLObjectType({
    name: 'user',
    fields: () => ({
        username: { type: GraphQLString },
        password: { type: GraphQLString }
    })
});
const Mutations = new GraphQLObjectType({
    name: 'Mutation',
    fields: {
        registerUser: {
            type: UserType,
            args: {
                username: { type: GraphQLString },
                password: { type: GraphQLString }
            },
            resolve(username, password) {
                console.log(username, password, 123)
            }
        },
    }
})

O problema é - eu estou passando senha e nome de usuário separatly como strings, mas meu console.log(username, password, 123)em mutações dá de volta undefinede cheio objeto com nome de usuário, campos de senha.

Eu não tenho certeza se estou fazendo algo errado. Toda a ajuda será muito apreciada.

Publicado 14/02/2020 em 00:02
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

A resolvefunção tem source, args, contexte infocomo parâmetros. Você pode ler mais sobre isso em função assinatura resolver .

Então, basicamente, você está pedindo sourcee args, por isso um é undefinedeo outro é o objeto de argumentos. A maneira de obter seus variáveis em seu resolvedor é:

const Mutations = new GraphQLObjectType({
    name: 'Mutation',
    fields: {
        registerUser: {
            type: UserType,
            args: {
                username: { type: GraphQLString },
                password: { type: GraphQLString }
            },
            resolve: (source, args) {
                console.log(args.username, args.password)
                // HERE: you can access your arguments input as part of the 'args' object
            }
        },
    }
})

Espero que ajude.

Respondeu 17/02/2020 em 10:43
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more