Skip to content

Instantly share code, notes, and snippets.

View clarencenpy's full-sized avatar

Clarence Ngoh clarencenpy

View GitHub Profile
const typeDefs = gql`
# define wrapper result type that could return either
# the added Event on success, or an array of Errors
# on error. Notice both fields are nullable.
type AddEventResult {
event: Event
validationErrors: [FieldValidationError!]
}
# define how you want errors to be represented. This
const typeDefs = gql`
type Event {
name: String!
date: Date!
capacity: Int!
zipCode: String!
}
`;
import ApolloClient from 'apollo-boost';
const client = new ApolloClient({
uri: '<your graphql endpoint>',
// Apollo Boost allows you to specify a custom error link for your client
onError: ({ graphQLErrors, networkError, operation, forward }) => {
if (graphQLErrors) {
for (let err of graphQLErrors) {
// handle errors differently based on its error code
switch (err.extensions.code) {
{
"message": "Failed to get events due to validation errors",
"extensions": {
"code": "BAD_USER_INPUT",
"exception": {
"validationErrors": {
"zipCode": "This is not a valid zipcode"
}
}
}
import { UserInputError } from 'apollo-server';
const resolvers = {
Query: {
events(root, { zipCode }) {
// do custom validation for user inputs
const validationErrors = {};
if (!isValidZipCode(zipCode)) {
validationErrors.zipCode = 'This is not a valid zipcode';