Problem z przekazywanie danych do graphql z reakcji

głosy
0

Mam nazwę użytkownika i hasło, które chcesz wysłać do graphql backend od reagują na frontend. Używam do tego klienta apollo

na mojej stronie klienta mam to

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

A ja dzwonię to tak

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

Na moim serwerze

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

Problem polega na tym - ja przechodząc hasło i nazwę użytkownika Separatly jako ciągi znaków, ale mój console.log(username, password, 123)w mutacji daje z powrotem undefinedi pełne przedmiot podając nazwę użytkownika, polach haseł.

Nie jestem pewien, gdzie robię coś złego. Cała pomoc będzie mile widziane.

Utwórz 13/02/2020 o 22:02
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

resolveFunkcja ma source, args, contexti infojako params. Możesz przeczytać więcej na ten temat w podpisie funkcji rozpoznawania nazw .

Więc w zasadzie pytasz dla sourcei args, dlatego jest jeden undefined, a drugi jest przedmiotem argumentów. Sposób, aby uzyskać zmiennych w rezolwer jest:

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

Mam nadzieję, że to pomoże.

Odpowiedział 17/02/2020 o 08:43
źródło użytkownik

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