Я пытаюсь отфильтровать запрос по определенному полю. Я могу добиться этого в проводнике Apollo в инструментах разработки, но я не могу перевести это в код.
Следующие работы в проводнике Apollo:
query ListUsersByType($filter: TableUsersFilterInput) {
listUsers(filter: $filter) {
items {
email
id
type
}
}
}
{
"filter": {
"type": {
"eq": "ADMIN"
}
}
}
Однако я не уверен, как это переводится в код с использованием хука useQuery.
Когда я пытаюсь сделать следующее, он вообще не фильтрует список, он просто извлекает их все независимо от типа:
const ListUsersByType = gql`
query ListUsersByType($type: TableUsersFilterInput) {
listUsers(filter: $type) {
items {
email
id
type
}
}
}
`
const { data, loading, error } = useQuery(ListUsersByType, {
variables: {
filter: {
type: {
eq: 'ADMIN',
},
},
},
})
Что мне здесь не хватает?
Ваши имена неверны
Вот вы говорите filter will use the variable type
const ListUsersByType = gql`
query ListUsersByType($type: TableUsersFilterInput) {
listUsers(filter: $type) {
items {
email
id
type
}
}
}
`
И вот ты проходишь filter
const { data, loading, error } = useQuery(ListUsersByType, {
variables: {
filter: {
type: {
eq: 'ADMIN',
},
},
},
})
Вы можете
Первое решение
заменить $type
на $filter
const ListUsersByType = gql`
query ListUsersByType($filter: TableUsersFilterInput) {
listUsers(filter: $filter) {
items {
email
id
type
}
}
}
`
Второе решение
переименуйте переменную filter
в type
const { data, loading, error } = useQuery(ListUsersByType, {
variables: {
type: {
type: {
eq: 'ADMIN',
},
},
},
})
Мое мнение
Я позволяю вам выбирать, но первый вариант кажется лучшим