Cannot return null for non-nullable field Subscription.counter

Viewed 452

I have integrated https://github.com/apollographql/apollo-server into NextJS api. Almost everything works as expected, except the subscription. I have set up a very simple subscription as follows:

type Subscription {
    counter: Int!
}

Resolver:

const Subscription: SubscriptionResolvers = {
    counter: {
        subscribe: (parent, args, ctx: Services) => {
            let count = 0
            setTimeout(() => {
                count++
                ctx.pubSub.publish("COUNTER", count)
            }, 500);
            return ctx.pubSub.asyncIterator("COUNTER");
        }
    }
}


export {Subscription as default}


export const resolvers: Resolvers = {
    Query: {
        greet: (parent, args) => {
            return `Hello ${args.name}`;
        }
    },
    Subscription: Subscription
};

Running the subscription, I have got:

enter image description here

What am I doing wrong? The code is hosted on https://github.com/softshipper/next-sub.

1 Answers

After checking your subscription resolver i found out that you did not return an object with a key counter as defined in your schema hence the reason the values cannot be read and resolved to null

const Subscription: SubscriptionResolvers = {
  counter: {
    subscribe: (parent, args, ctx: Services) => {
      let count = 0;
      setInterval(() => {
        count += 1;
        ctx.pubSub.publish("COUNTER", { counter: count });
      }, 500);
      return ctx.pubSub.asyncIterator("COUNTER");
    },
  },
};

export default Subscription;
Related