【问题标题】:GraphQL Apollo resolver not firing?GraphQL Apollo 解析器没有触发?
【发布时间】:2021-09-25 13:32:36
【问题描述】:

解析器

export const resolvers = {
  ...
  Mutation: {
    register: async (
      _: unknown,
      { input }: { input: RegisterInput },
      { prisma }: GraphQLRequestContext
    ): Promise<RegisterResult> => {
      const { email, password, lastName, firstName } = input
      console.log('hello')

      ...

      (some ifs that return {
        __typename: 'BadRequest',
        message: 'Bad request',
      })

      ...
      return { __typename: 'AuthResult', token }
    },
  },
}

类型定义

export const typeDefs = gql`
  type BadRequest {
    message: String!
  }

  type Mutation {
    register(input: RegisterInput!): RegisterResult!
  }

  input RegisterInput {
    email: String!
    password: String!
    firstName: String
    lastName: String
  }

  type AuthResult {
    token: String!
  }

  union RegisterResult = AuthResult | BadRequest
`

服务器

const server = new ApolloServer({
  typeDefs,
  resolvers,
  context: () => ({ prisma }),
})

当使用这种突变发出请求时,我得到"Cannot return null for non-nullable field Mutation.register."

如果我在我得到的突变结果中使RegisterResult 可以为空

{
  "data": {
    "register": null
  }
}

无论哪种情况,解析器中的控制台日志都不会出现在日志中。类型是从 typedef 自动生成的。

【问题讨论】:

  • 出于好奇,您是如何导入resolvers 的?如果您在调用new ApolloServerconsole.log(resolvers); 是您期望的对象吗?
  • @loganfsmyth 奇怪的是它已经过时了吗?它在 ./resolvers/index.ts 中,我像 import { resolvers } from './resolvers' 一样引用它。将其移出索引文件可以解决此问题,从索引文件中导入仍然会出现此问题,我以前从未遇到过这种情况
  • 很奇怪,不知道该说什么。也许您的构建以某种方式缓存了一些错误。

标签: graphql apollo-server


【解决方案1】:

您能否分享一个您如何称呼这种突变的样本?似乎从错误消息中您没有传递必填字段。

这些应该传入:

email: String!
password: String!

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 2021-03-21
    • 2018-09-30
    • 2020-01-28
    • 2020-07-22
    • 2020-01-31
    • 2021-08-22
    • 2020-09-11
    • 2021-07-25
    相关资源
    最近更新 更多