GraphQL"不等于"运算符?

bat*_*jko 7 graphql

我有一个GraphQl API用于列出一堆项目,我可以完美地查询它等.但现在我想查询该列表的一个子集,其中一个属性可以具有"除一个特定的一个之外的所有可能值".

例如,我想查询这样的事情:

{
  items(status: !"Unwanted"){
    id
  }
}
Run Code Online (Sandbox Code Playgroud)

这个感叹号显然不起作用,但它说明了我所追求的.在网上找不到任何关于此的信息.

有人知道这样做的方法吗?我真的很讨厌必须枚举所有可能的值,而不是只排除一个不需要的值.这将是非常糟糕的设计,并且不可扩展.

谢谢.

小智 13

用途ne:

{
  items(filter: {status: {ne: "Unwanted"}}){
    id
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 在 `status: {ne: "Unwanted"}` 周围缺少 `filter: {}`。这应该是`items(filter: { status: {ne: "Unwanted"} })` (2认同)

Mat*_*247 7

如果你可以定义模式(实现服务器),那么你可以添加第二个参数一样statusExceptitems领域.然后在resolve方法中检查是否已设置status或statusExcept并根据该项传递项目.

服务器API是固定的,除了获取所有内容并在客户端上进行过滤之外,您无法做任何事情.

  • 谢谢你的提示.我可以看到这将如何轻松地工作.GraphQL真的没有"不"的概念吗?看起来像是一个明显的遗漏. (3认同)
  • 但确实如此!这是一种查询语言.它具有允许您搜索特定值的查询参数(但它们可能由后台架构实现).因此,如果我可以查找例如{status:"New"},即status ="New",为什么它没有status的概念!="New",例如:{$ not:{status:"New "}}?似乎是一个显而易见的事情. (2认同)
  • @batjko这不是真的那样:)当你执行`status:"New"`你只需要将参数传递给GraphQL解析函数.它可以用于搜索,但也可以用于其他目的.例如,分页,选择所需的图像大小.对于那些论点,$ not没有多大意义. (2认同)
  • 好点子.我之前并没有真正将其视为"将参数传递给解析函数",但这很有意义.我通常只把它理解为"查询参数"以及该术语所暗示的所有内容.很公平.谢谢你的解释,@ freiksenet! (2认同)