如何在 GraphQL 中过滤大于

Posted

技术标签:

【中文标题】如何在 GraphQL 中过滤大于【英文标题】:How to filter greater than in GraphQL 【发布时间】:2018-01-22 06:52:45 【问题描述】:
type Person 
    firstName: String!,
    lastName: String!,
    age: Int!

如何查询所有18岁以上的人?

【问题讨论】:

【参考方案1】:

这可能取决于您使用的后端,但例如在 graph.cool 中你可以这样:

query 
  allPersons(filter: 
    age_gt: 18
  ) 
    firstName
    lastName
  

【讨论】:

【参考方案2】:

如果您使用 Prisma 作为后端,您可以使用大于运算符 (_gt),如下所示:

query 
  persons(where: age_gt: 18) 
    firstName
    lastName
    age
  

您还可以使用其他运算符,例如:

_gt(大于) _lt(小于) _gte(大于等于) _lte(小于或等于) _in(等于) _not_in(不等于)

它们兼容任何数据类型,如 Integer、Float、Double、Text、Boolean、Date 等。

【讨论】:

【参考方案3】:

Graphql will not include these complex filters atleast for DECADE as graphql is acting to be library.

库成为其他库和框架的一部分。它们不会 成为框架

现在要使用 graphql 来完全扩展,你可以将它与 ORM'S 结合使用 比如 Hasura 或 Graphile 或 Prisma

Hasura

query 
  article(
    where: rating: _gte: 4
  ) 
    id
    title
    rating
  

Prisma

query 
  posts(where: 
    AND: [
      title_in: ["My biggest Adventure", "My latest Hobbies"]
    ]
  ) 
    id
    title
  

建议 不要直接/独立使用graphql,和上面的orm一起使用

【讨论】:

以上是关于如何在 GraphQL 中过滤大于的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sangria 中使用 graphql 查询过滤列表响应

Gatsby 和 GraphQL - 如何在查询中过滤数组

Graphcool(Graphql):如何在 Id 数组中进行精确过滤

如何在 Gatsby GraphQL 中过滤子数组?

如何在 graphql 查询中按文件扩展名过滤

如何在 GraphQL 中添加列表