GraphQL 的错误之一:处理 “null” 是一个对象的异常

GraphQL 是一种用于 API 的查询语言和运行时环境。它可以让客户端精确地说明需要什么数据,而服务器仅仅提供必要的数据。虽然 GraphQL 有许多好处,但它仍然有一些常见的错误。其中之一是处理 “null” 是一个对象的异常。

当你使用 GraphQL 查询一个对象里的某个属性时,如果该属性有一个 null 值,那么 GraphQL 将会返回一个对象而不是 null 值。这种情况下,你需要知道如何处理这个异常。

问题原因

当 GraphQL 查询结果包含 null 值时,它不会返回 null 值,而是返回一个对象,这个对象有一个 __typename 属性和一个 null 值的属性。这是由于 GraphQL 规范要求每个查询都返回一个对象,因此它不能直接返回 null。这可能会导致问题,因为你可能会想对 null 值执行某些操作,例如对字段进行操作或作为参数传递给其他函数。

解决方案

要解决这个问题,GraphQL 提供一个解决方案:使用 fragmentson 操作符。你可以使用 fragments 来定义你的数据结构,并使用 on 操作符来指定要处理的数据类型,这样你就可以处理 null 值了。

这里有一个示例代码:

query getUser($id: ID!) {
  user(id: $id) {
    id
    name
    address {
      ... on Address {
        city
        country
      }
    }
  }
}

在这个查询中,如果 address 字段是 null,代码仍然可以正常工作。这是因为我们使用了 on 操作符来指定只有地址对象时才会处理它。这样就可以避免处理 null 值时出现问题。

总结

对于 GraphQL 开发人员来说,处理 “null” 是一个对象的异常是一个常见的问题。GraphQL 规范要求每个查询都返回一个对象,因此它不能直接返回 null。解决这个问题的方法是使用 fragmentson 操作符来定义数据结构并指定数据类型,以便在处理 null 值时避免出现问题。当你遇到这个问题时,希望这篇文章可以帮助你了解如何解决它。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/659d5536add4f0e0ff6a181d


纠错反馈