Правильно ли настроена эта мутация graphql-relay (createPerson)?

Я пытаюсь использовать пакет узла graphql-relay для реализации мутаций, и, следуя примеру их корабля, я не понимаю, как именно реализовать функцию разрешения в полях outputFields и mutateAndGetPayload - я не уверен, какие функции принадлежат каждому.

В своем примере "IntroduceShip" они создают новый корабль в mutateAndGetPayload, затем передают только идентификатор корабля в "полезной нагрузке", затем снова получают корабль... (а также фракцию)

Мой код, следующий за их примером IntroduceShip:

const CreatePersonMutation = mutationWithClientMutationId({
  name: "CreatePerson",
  inputFields: {
    name: { type: new GraphQLNonNull(GraphQLString) },
    email: { type: new GraphQLNonNull(GraphQLString) },
    age: { type: new GraphQLNonNull(GraphQLInt) },
  },
  outputFields: {
    person: {
      type: new GraphQLNonNull(GQLPerson),
      resolve: async (payload) => Person.findByPk(payload.id),
    },
  },
  mutateAndGetPayload: async ({name, email, age}) => {
    const person = await Person.create({name, email, age});
    return { id: person.id };         
  },
});

Все, что я знаю, это то, что я не должен получать Person снова после того, как он вернулся в первый раз (при создании). Думаю, мне просто нужно вывести эти данные в поле разрешения... Я неправильно истолковал их код? Мне также интересно, нужно ли мне здесь беспокоиться о globalIds или нет? Правильно ли я использую асинхронный метод разрешения и mutateAndGetPayload? или только мутация должна быть асинхронной?

0 ответов

Другие вопросы по тегам