Problem mit Daten zu graphql Übergang von reagieren

stimmen
0

Ich habe Benutzername und Passwort, die ich graphql Backend senden möchten von am Frontend reagieren. Ich verwende APOLLO-Client für das

auf meiner Client-Seite habe ich diese

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

Und ich rufe es so

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

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

Das Problem ist - ich bin vorbei Passwort und Benutzernamen separatly als Strings, aber meine console.log(username, password, 123)in Mutationen gibt zurück undefinedund vollständige Objekt mit Benutzername, Passwort - Feldern.

Ich bin mir nicht sicher, wo ich etwas falsch mache. Alle Hilfe wird sehr geschätzt.

Veröffentlicht am 13/02/2020 um 22:02
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Die resolveFunktion hat source, args, contextund infoals params. Sie können mehr über sie in lesen Resolver Funktionssignatur .

Also im Grunde fordern Sie für sourceund args, deshalb ist undefinedund das andere ist das Objekt von Argumenten. Die Art und Weise Ihre Variablen erhalten in Ihrem Resolver ist:

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

Ich hoffe es hilft.

Beantwortet am 17/02/2020 um 08:43
quelle vom benutzer

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