学习 GraphQL:如何处理 null 值

阅读时长 3 分钟读完

GraphQL 是一种灵活的数据查询语言,让开发人员可以精确地定义他们所需要的数据,并避免了过度获取数据、网络传输效率低等问题。但是在查询时,如果所请求的数据不存在,那么 GraphQL 会返回 null 值。本文将介绍在 GraphQL 中如何处理 null 值,以及如何减少 null 值的出现。

处理 null 值

在 GraphQL 中,如果查询所请求的数据不存在,则会返回 null 值。因此,在代码中必须考虑 null 值的可能性,以避免代码崩溃或产生不必要的错误。

查询中的 null 值

在 GraphQL 查询中,可以使用可选链式语法(optional chaining)来处理 null 值。可选链式语法会在属性或方法中使用问号,如果该属性或方法返回 null 值,则返回 undefined,而不是引发错误。

例如,以下 GraphQL 查询会返回一个名为 "person" 的对象,如果这个对象中不包含 "name" 属性,则会返回 null 值:

为了避免 null 值的出现,可以使用可选链式语法:

如果 "person" 对象中没有 "name" 属性,该查询不会失败,而是直接返回 undefined,避免了不必要的错误。

解析器中的 null 值

在 GraphQL 中,查询结果的解析器也需要考虑到 null 值的可能性。

例如,假设以下查询中的 "Person" 类型包含一个 "friends" 属性,该属性返回一个包含 "Person" 对象的数组。如果 "friends" 属性返回 null 值,则会导致解析器出现错误:

为了避免 null 值引起的错误,可以在解析器中进行判断:

-- -------------------- ---- -------
-
  ------- -
    -------- -------- -- -
      -- ---------------- -
        ------ ---------------
      - ---- -
        ------ ---
      -
    -
  -
-

如果 "friends" 属性为 null 值,则该解析函数会将其替换为一个空数组,避免了错误的发生。

减少 null 值的出现

在 GraphQL 中,为了提高性能并减少 null 值的出现,需要在请求中指定所需的字段。如果请求的字段包含 null 值,则在响应中返回整个对象非常浪费。

例如,以下 GraphQL 查询请求了一个 "person" 对象以及其 "name" 和 "email" 属性:

如果查询中返回的 "person" 对象包含许多其它属性,但没有 "name" 或 "email" 属性,则会返回一些不必要的 null 值。如果请求中只包含所需的字段,则可以减少 null 值的出现:

结论

了解 GraphQL 如何处理 null 值是成为一名优秀开发人员的必备技能。在查询和解析器中处理 null 值,可以避免代码崩溃或产生不必要的错误。通过减少 null 值的出现,可以提高性能并减少响应数据的大小。

希望本文对你学习 GraphQL 有所帮助!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671627ddad1e889fe21b1b05

纠错
反馈