Правильно ли настроена эта мутация 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? или только мутация должна быть асинхронной?