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

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

0 голосов
/ 15 сентября 2018

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

0 голосов
/ 19 сентября 2018

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

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

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

usersQuery(ageLimit: Int): [users]

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

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

, и вы должны настроить свой преобразователь где оператор с этими операторами.надеюсь, что это поможет вам.

0 голосов
/ 15 сентября 2018

Это возможно - это должно быть иначе. Ваш запрос не будет правильным 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, то в них нет встроенной фильтрации.

...