Реагируйте на Аполлон и условные булевы переменные

#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 с более продвинутыми, где логические деревья (объект) с реквизитами «и», «или» (массивы аргументов)