Начал активно использовать GraphQL в новом проекте. Сделал весь функционал обращения к базе данных и теперь начал думать как более коректно его использовать.
Есть задача, рестораны и категории. Изначально выводяться все рестораны так как категория не выбрана. А при клике на категорию получая ID делается запрос к базе данных дабы получить рестораны что имеют категорию с таким ID.
Запрос на клиенте
const { loading, data = {} } = useQuery(RESTAURANTS, {
variables: { category: "" }
})
И на сервере
Restaurants: async (parent, args) => {
const { category } = args
if(category !== ''){
return await Restaurant.find({ categories: category })
} else{
return await Restaurant.find()
}
},
Касаемо вопроса , почему сразу не получить все рестораны на клиенте и потом лишь фильтровать с помощью Реакта. На данный момент ресторанов мало и для тестов я получаю их сразу все на странице изначально. Но их будет больше и изначально мы получим не все сразу , а лимитированно 10 . Поэтому такой вариант отпадает
Дело в том что все это работает, только не совсем понятно мощность GraphQL в данном случае. Ведь сейчас это по сути простое условия и простое обращения в базу данных.
Из плюсов стоит отметить что повторные запросы кэшируются и уже не отправляются, и в этом я заметил плюс
К примеру для данного кода мне надо менять ID категории, и тогда снова делеть обращения к базе
Т.е вызывать данный кусок кода с нужной переменной?
const { loading, data = {} } = useQuery(RESTAURANTS, {
variables: { category: "" }
})