Problemi con passaggio di dati a graphql da reagire

voti
0

Ho username e password, che voglio inviare al backend graphql da reagire frontend. Sto usando Apollo client per quel

sul mio lato client ho questo

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

E sto chiamando come questo

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

Sul mio server

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

Il problema è - Sto passando password e nome utente separatamente come stringhe, ma il mio console.log(username, password, 123)in mutazioni restituisce undefinede pieno oggetto con nome utente, campi password.

Non sono sicuro di dove sto facendo qualcosa di sbagliato. Tutto l'aiuto sarà molto apprezzato.

È pubblicato 13/02/2020 alle 22:02
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

La resolvefunzione ha source, args, contexte infocome params. Si può leggere di più su di esso nella firma della funzione risolutore .

Quindi, in pratica stai chiedendo sourcee args, questo è il motivo per cui uno è undefinede l'altro è l'oggetto di argomenti. Il modo per ottenere le variabili nel vostro resolver è:

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

Spero che sia d'aiuto.

Risposto il 17/02/2020 a 08:43
fonte dall'utente

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