GraphQL, где: больше / меньше, чем

#reactjs #graphql #apollo #strapi

Вопрос:

Я пытаюсь понять, как запросить «меньше»/»больше», используя GraphQL для бэкэнда strapi (используя React/Apollo). В принципе, я бы хотел, чтобы сумма бонуса была «не меньше», чем $min_bonus, и «не больше», чем $max_bonus…

Что было бы хорошим решением этой проблемы?

Мой Вопрос:

 import { gql } from "@apollo/client";


const BONUSES_QUERY = gql`

query bonuses($min_bonus, $max_bonus, $welcome_bonus: Boolean, $deposit_bonus: Boolean, $monthly_bonus: Boolean, $weekly_bonus: Boolean, $slots_bonus: Boolean, $nodeposit_bonus: Boolean ) {
    
  welcome_bonuses: bonuses(where: 
    { 
      welcome_bonus: $welcome_bonus
      
    })
  {
    ...BonusParts
  }

  deposit_bonuses: bonuses(where: { deposit_bonus: $deposit_bonus })
  {
    ...BonusParts
  }

  monthly_bonuses: bonuses(where: { monthly_bonus: $monthly_bonus })
  {
    ...BonusParts
  }

  weekly_bonuses: bonuses(where: { weekly_bonus: $weekly_bonus })
  {
    ...BonusParts
  }

  slots_bonuses: bonuses(where: { slots_bonus: $slots_bonus })
  {
    ...BonusParts
  }

  nodeposit_bonuses: bonuses(where: { nodeposit_bonus: $nodeposit_bonus })
  {
    ...BonusParts
  }

}
fragment BonusParts on Bonuses {
          name
          casino { 
            name
            aff_link
            logo { 
              url 
            }
          }
          slug
          title
          amount
          code
          min_deposit
          value
          wager
          cashable
          bonus_type {
            name
          }      
  }


`;

export default BONUSES_QUERY;
 

Ответ №1:

Вы говорите, что хотите больше и меньше, но в вашем описании указано, что вы хотите больше или равно и меньше или равно, поэтому мое предложение для этого. Вы можете заменить _gt _gte и тому подобное, если не хотите включать ограничение.

Вот соответствующая документация Strapi.

Вы можете добавлять _gte и _lte добавлять поля в свои where предложения следующим образом.

 import { gql } from "@apollo/client";


const BONUSES_QUERY = gql`

query bonuses($min_bonus, $max_bonus, $welcome_bonus: Boolean, $deposit_bonus: Boolean, $monthly_bonus: Boolean, $weekly_bonus: Boolean, $slots_bonus: Boolean, $nodeposit_bonus: Boolean ) {
    
  welcome_bonuses: bonuses(where: 
    { 
      deposit_bonus_gt: $min_bonus, 
      deposit_bonus_lt: $max_bonus,
      welcome_bonus: $welcome_bonus
      
    })
  {
    ...BonusParts
  }

  deposit_bonuses: bonuses(where: 
    { 
      deposit_bonus_gt: $min_bonus, 
      deposit_bonus_lt: $max_bonus,  
      deposit_bonus: $deposit_bonus 
    })
  {
    ...BonusParts
  }

  ...