Problém s předávání dat do graphql z reagovat

hlasů
0

Mám uživatelské jméno a heslo, které chci poslat do graphql backend od reagovat na frontendu. Já používám apollo klient za to

na mé straně klienta mám to

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

A já ji volá takhle

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

Na mém serveru

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

Problém je v tom - já absolvování heslo a uživatelské jméno separatly jako řetězce, ale my console.log(username, password, 123)v mutacích dává zpět undefineda full objekt s uživatelským jménem a heslem polí.

Nejsem si jistý, kde dělám něco špatně. Veškerou pomoc bude velmi ocenil.

Položena 14/02/2020 v 00:02
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

resolveFunkce má source, args, contexta infojak params. Můžete si přečíst více o tom v podpisu funkce resolver .

Takže v podstatě žádáte sourcea args, to je důvod, proč jeden je undefineda druhý je předmětem argumentů. Způsob, jak dostat své proměnné v váš resolver je:

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

Doufám, že to pomůže.

Odpovězeno 17/02/2020 v 10:43
zdroj uživatelem

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