Я новичок в 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
}
}
конечно, в любом случае преобразователь на бэкэнде должен ожидать этот аргумент where в поле users и соответствующим образом строить запрос БД при его передаче. Вы не найдете этого в документации GraphQL, потому что сам GraphQL не заботится об этом. Он только демонстрирует, как использовать функции GraphQL.
Если вы пробовали примеры проектов, например, star was api, они не имеют встроенной фильтрации.
Вы должны отправить свой возрастной фильтр в качестве параметра. Вы можете попробовать следующий:
В вашем файле graphql
type users {
name: String,
age: Int,
...
}
usersQuery(ageLimit: Int): [users]
также вы можете отправить '>', '<', '=' в качестве параметра. Также кажется, что
usersQuery(ageLimit: Int, ageOperator: String): [users]
и вы должны настроить свой резольвер where с этими операторами. надеюсь, это поможет вам.
Самый простой - по параметрам / переменным, таким как
minAge,maxAge- это роль преобразователя, чтобы «реагировать» (использовать) условно, когда эти необязательные параметры определены.