簡體   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