GraphQL mutasjon uten sub seksjon

stemmer
12

Jeg ønsker å sende graphql mutasjon forespørsel uten sub seksjon

mutation _ {
    updateCurrentUser(fullName: Syava, email: fake@gmail.com)
}

og jeg får

{
  errors: [
    {
      message: Field \updateCurrentUser\ of type \User\ must have a sub selection.,
      ... 
    }
  ]
}

legge til {id} til forespørsel fungerer fint, men jeg ønsker ikke

Også Schema kode

const userType = new GraphQLObjectType({
  name: 'User',
  fields: () => ({
    id: { type: new GraphQLNonNull(GraphQLString) },
    fullName: { type: GraphQLString },
    email: { type: GraphQLString },
  }),
});

type: userType,
  args: {
    fullName: { type: GraphQLString },
    email: { type: new GraphQLNonNull(emailType) },
    password: { type: GraphQLString },
  },
  resolve: async (root, { fullName, email, password }, { rootValue }) => {
    const user = await User.findById(rootValue.req.user.id);

    ...

    return user;
  },
Publisert på 03/12/2015 klokken 17:56
kilden bruker
På andre språk...                            


1 svar

stemmer
7

Du definerer hvilken type av feltet for å være brukertype. Selv om det er en mutasjon, følger det fortsatt de samme regler og atferd som en spørring. Fordi brukertype er en objekttype, krever den nestede felt.

mutation _ {
  updateCurrentUser(fullName: "Syava", email: "fake@gmail.com") {
    fullName
    email
  }
}
// would respond with { fullName: 'Syava', email: 'fake@gmail.com' }

Hvis du ikke vil at mutasjonen å returnere en bruker, kan du erklære sitt slag til GraphQLBoolean for eksempel - det er en skalar og ikke har noen nestede felt.

{
  type: GraphQLBoolean,
  args: {
    fullName: { type: GraphQLString },
    email: { type: new GraphQLNonNull(emailType) },
    password: { type: GraphQLString },
  },
  resolve: async (root, { fullName, email, password }, { rootValue }) => {
    const user = await User.findById(rootValue.req.user.id);
    user.fullName = fullName;
    user.password = password; // or hashed to not store plain text passwords
    return user.save(); // assuming save returns boolean; depends on the library you use
  }
}
Svarte 10/12/2015 kl. 01:06
kilden bruker

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