#reactjs #graphql #apollo
Вопрос:
У меня есть этот запрос Apollo и запрос GraphQL ниже… И это работает, но, к сожалению, не так, как я хочу …
Теперь я понимаю «ГДЕ»: в казино есть популярные=true/false И мобильные=true/false И награжденные=true/false и так далее … (с ударением на «И»)
популярные, мобильные, награжденные и живые-это флажки на веб-странице, которые я использую для фильтрации результатов, которые обновляются, когда пользователь проверяет/снимает их.
Чего я хочу
Когда пользователь проверяет, например, популярные и награжденные, я хочу показать все казино, для которых присвоено значение true, и все казино, для которых установлено значение true. НЕ казино, в которых популярность И вознаграждение установлены на истину.
Как?
Реагировать/JS:
<Query query={CASINO_QUERY}
variables={{
popular: this.state.popular,
awarded: this.state.awarded,
mobile: this.state.mobile,
live: this.state.live
}}>
{({ data, loading, error }) => {
if (loading) return <p>Loading…</p>;
if (error) return <p>Something went wrong</p>;
return (
<div>
{data.casinos.map((casino) => (
<Featured key={casino.id} casino={casino} />
))}
</div>
);
}}
</Query>
Запрос GraphQL:
import { gql } from "@apollo/client";
const CASINO_QUERY = gql`
query casinos($popular: Boolean, $awarded: Boolean, $mobile: Boolean, $live: Boolean ) {
casinos(where: {
Popular: $popular
Awarded: $awarded
Mobile: $mobile
Live: $live
})
{
slug
name
logo {
url
}
rating
owner
founded
payout_percentage
expert_consensus
}
}
}
`;
export default CASINO_QUERY;
Комментарии:
1. это не проблема с запросами … все зависит от реализации API … похоже, что этот API не поддерживает никаких логических конструкций/синтаксиса … в качестве обходного пути вы можете использовать псевдонимы, один для популярных, 2-й для награжденных
2. Спасибо вам за ваш ответ, xadm… Я попробую это сегодня и вернусь, надеюсь, это то, что я ищу. Знаете ли вы какой-нибудь пример того, как это обычно делается без обходных путей?
3. создайте API с более продвинутыми, где логические деревья (объект) с реквизитами «и», «или» (массивы аргументов)