当前位置: 首页 > 知识库问答 >
问题:

GraphQL查询:仅包含字段如果不为空

呼延骏俊
2023-03-14

GraphQL是否有可能让客户端告诉服务器,只有当某个字段不是null时,它才需要该字段?

考虑到这个问题

query HeroAndFriends {
  hero {
    name
    friends {
      name
    }
  }
}

然后,反应应该是这样的

{
  "data": {
    "hero": {
      "friends": [
        {
          "name": "Luke Skywalker"
        },
        {
          "name": "Han Solo"
        },
        {
          "name": "Leia Organa"
        }
      ]
    }
  }
}

而不是

{
  "data": {
    "hero": {
      "name": null,
      "friends": [
        {
          "name": "Luke Skywalker"
        },
        {
          "name": "Han Solo"
        },
        {
          "name": "Leia Organa"
        }
      ]
    }
  }
}

这是否可能在不违反GraphQL规范的情况下实现?

共有2个答案

慕容文昌
2023-03-14

您可以在前端使用以下ES6语法:

Object.keys(data).forEach((key) => (data[key] == null) && delete data[key]);
仲孙磊
2023-03-14

据我所知,这是不可能的,有像@skip和@include这样的指令。指令但它们需要一个变量,我认为您可以与graphql团队合作,将指令扩展为仅包含字段(如果字段不为null)。

 类似资料:
  • 问题内容: 我想找到一个SQL查询来查找其中field1不包含$ x的行。我怎样才能做到这一点? 问题答案: 这是什么领域?IN运算符不能与单个字段一起使用,而应与子查询或预定义列表一起使用: 如果要搜索字符串,请使用LIKE运算符(但这会很慢): 如果将其限制为要搜索的字符串必须以给定的字符串开头,则可以使用索引(如果该字段上有索引)并且速度相当快:

  • 如何使elasticsearch查询返回没有_internal字段的结果,如_index、_type? 原因:对于几个页面,我使用AJAX调用来获取结果,而不是在服务器上呈现整个网页。但是为每个文档公开_index&_type内部字段不仅是冗余的(带宽),而且还暴露了索引和类型名称(安全问题)。 请救命!

  • 我知道拆分字符串并使用运算符是可能的,但我想知道是否可以使用字符串比较轻松地完成。

  • 问题内容: 我有一些表,其中有一个名为company的字段,可以在其中包含: “假公司”或“ 5.5.5.5” 上面的数字地址当然是IP地址。 我不确定如何编写一个选择查询,该查询只返回其中具有IP地址的行,而不仅仅是文本。有任何想法吗? 问题答案: 您可以在SQL Server上使用RegularExpressions,例如: 这是函数: SQL Server上的RegularExpressio

  • 问题内容: 在这里,您可以下载 一个acroform字段的pdf,其大小恰好是427Kb 如果我删除此唯一字段,则文件仅为3Kb,请为什么会发生这种情况?我尝试使用PDF Debugger进行分析,但似乎没有任何异常。 问题答案: 在acroform默认资源中有一个嵌入的“ Arial”字体,请参见Root/AcroForm/DR/Font/Arial/FontDescriptor/FontFil

  • 我正在努力学习GraphQL( 我只得到一级字段,比如: 以下是我的模式: 我的解析器: 知道我做错了什么吗?