Привет Я пытаюсь выяснить, как обрабатывать ошибки пользователя с помощью graphql и relay при выполнении мутаций.GraphQL, Relay: Обработка ошибок
Это моя реализация graphql для мутации CreateUser:
mutationWithClientMutationId({
name: 'CreateUser',
inputFields: {
email: { type: new GraphQLNonNull(GraphQLString) },
},
outputFields: {
user: { type: userType },
error: {type: errorType},
},
mutateAndGetPayload: async (attrs, { viewer }) => {
try {
// Try to create a user
} catch(err) {
// err.toObject has the shape required by the error type
return { error: err.toObject() };
}
}
});
И это мой релейной Мутация класс
class CreateUserMutation extends Relay.Mutation {
getMutation() {
return Relay.QL`mutation { createUser }`;
}
getVariables() {
return {
email: this.props.email,
};
}
getFatQuery() {
return Relay.QL`
fragment on CreateUserPayload {
error
}
`;
}
getConfigs() {
return [{
type: "FIELDS_CHANGE",
fieldIDs: {
error: ????,
}
}];
}
}
Я попытался также другой подход, который не поймать ошибку в graphql, и слушать onFailure при выполнении мутации реле, но мне пришлось сделать что-то подобное, чтобы получить мою ошибку return error.getError().source.errors[0]
, но я думаю, что мне нравится подход к возврату типа ошибки лучше, но я не могу заставить его работать, любая помощь пожалуйста