【问题标题】:Cannot return null for non-nullable field Subscription.counter不能为不可为空的字段 Subscription.counter 返回 null
【发布时间】:2021-08-06 05:51:33
【问题描述】:

我已将https://github.com/apollographql/apollo-server 集成到 NextJS api 中。几乎所有东西都按预期工作,除了订阅。 我设置了一个非常简单的订阅如下:

type Subscription {
    counter: Int!
}

解析器:

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
};

运行订阅,我得到了:

我做错了什么?代码托管在https://github.com/softshipper/next-sub

【问题讨论】:

    标签: graphql next.js


    【解决方案1】:

    在检查您的订阅解析器后,我发现您没有返回具有架构中定义的键计数器的对象,因此无法读取值并将其解析为 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;
    

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 2019-10-25
      • 2019-05-28
      • 2019-07-08
      • 2023-03-28
      • 2021-08-18
      • 2021-11-27
      • 2021-10-24
      • 2021-05-11
      相关资源
      最近更新 更多