Проблема с прохождением данных в graphql от реакции

голоса
0

У меня есть имя пользователя и пароль, который я хочу отправить 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и полный объект с именем пользователя, полями пароля.

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

Задан 13/02/2020 в 22:02
источник пользователем
На других языках...                            


1 ответов

голоса
1

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

Поэтому в основном вы просите 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
            }
        },
    }
})

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

Ответил 17/02/2020 в 08:43
источник пользователем

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