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]
и вы должны сконфигурировать ваш резолвер где оператор с этими операторами. надеюсь, это поможет вам.