GraphQL условные запросы

Я новичок в 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
      }
    }

Ничего подобного не нашел в документации...

2 ответа

Решение

Это возможно - это должно быть по-другому. Ваш запрос не будет правильным GQL-запросом. Примерно так:

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

или может быть проще:

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

конечно, так или иначе, резольвер на бэкэнде должен ожидать этого where аргумент на users поле и построить запрос БД соответственно, когда он будет передан. Вы не найдете этого в Документах GraphQL, потому что сам GraphQL не заботится об этом. Он только демонстрирует, как использовать возможности GraphQL.

Если вы пробовали примеры проектов, таких как, например, star is api, то в них нет встроенной фильтрации.

Вы должны отправить свой возрастной фильтр в качестве параметра. Вы можете попробовать следующее:

В вашем файле graphql

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

usersQuery(ageLimit: Int): [users]

также вы можете отправить '>', '<', '=' в качестве параметра. Тоже похоже

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

и вы должны сконфигурировать ваш резолвер где оператор с этими операторами. надеюсь, это поможет вам.

Другие вопросы по тегам