Проблема с передачей данных в GraphQL от реакции - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть имя пользователя и пароль, которые я хочу отправить в серверную часть graphql с веб-интерфейса реакции. Я использую клиент apollo для этого

на стороне клиента. У меня есть это

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

И я так называю

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

На моем сервере

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

Проблема в том, что я передаю пароль и имя пользователя отдельно в виде строк, но мой console.log(username, password, 123) в мутациях возвращает undefined и полный объект с полями имени пользователя и пароля.

Я не уверен, где я делаю что-то не так. Вся помощь будет высоко ценится.

1 Ответ

1 голос
/ 17 февраля 2020

Функция resolve имеет source, args, context и info в качестве параметров. Подробнее об этом вы можете прочитать в сигнатура функции распознавателя .

Итак, в основном вы запрашиваете source и args, поэтому один из них - undefined, а другой - объект аргументов. Вы можете получить переменные в своем преобразователе:

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

Надеюсь, это поможет.

...