Problema con el paso de datos a graphql de reaccionar

votos
0

Tengo nombre de usuario y contraseña, que quiero enviar a backend graphql de reaccionar sobre frontend. Estoy usando apolo cliente para que

en mi lado del cliente tengo este

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

Y yo estoy llamando como esto

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

En mi 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)
            }
        },
    }
})

El problema es - Estoy de paso por separado la contraseña y nombre de usuario como cadenas, pero mi console.log(username, password, 123)lugar a mutaciones da la espalda undefinedy el objeto completo con nombre de usuario, los campos de contraseña.

No estoy seguro de que estoy haciendo algo mal. Toda la ayuda será muy apreciada.

Publicado el 14/02/2020 a las 00:02
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

La resolvefunción tiene source, args, contexty infocomo params. Puede leer más sobre esto en firma de la función de resolución .

Así que básicamente está pidiendo sourcey args, es por eso que uno es undefinedy el otro es el objeto de argumentos. La manera de conseguir sus variables en su resolución es:

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 eso ayude.

Respondida el 17/02/2020 a las 10:43
fuente por usuario

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