繁体   English   中英

GraphQL条件查询

[英]GraphQL Conditional Queries

我是GraphQL的新手,我想知道是否有一种简单的方法来查询“动态条件”。

例如,在GraphiQL上我可以查询:

query {
  users{
    name
    age
  }
}

它将为我提供所有用户的列表

{
  "data": {
    "users": [
      {
        "name": "Luis Coimbra",
        "age": 15
      },
      {
        "name": "Sebastião Campagnucci",
        "age": 50
      },
      {
        "name": "Giovana Ribeiro",
        "age": 30
      }
    ]
  }
}

但是,对于我来说,只有18岁以上或任何其他年龄的用户才能轻松获得?

预期的解决方案是:

query {
      users{
        name
        age > 18
      }
    }

在文档上没有找到类似的东西......

这是可能的 - 它必须是不同的。 您的查询将不是有效的GQL查询。 这样的事情会:

    {
      users(where: {age: { $gt: 18 }}){ #inspired by mongoDB query api
        name
        age
      }
    }

或者更简单:

   {
     users(where: {age: ">18"}}){
        name
        age
      }
   }

当然,后端的解析器需要在users字段的参数上进行预期where并在传递时相应地构造数据库查询。 你不会在GraphQL文档中找到它,因为GraphQL本身并不关心它。 它只展示了如何使用GraphQL的功能。

如果您尝试了示例项目,例如star是api,则那些内置的过滤器没有。

您应该将年龄过滤器作为参数发送。您可以尝试以下方法:

在你的graphql文件中

type users {
 name: String,
 age: Int,
 ...
}

usersQuery(ageLimit: Int): [users]

你也可以发送'>','<','='作为参数。 它似乎也是这样

usersQuery(ageLimit: Int, ageOperator: String): [users]

并且您应该使用这些运算符配置解析器where语句。 希望它能帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM