Почему я не могу отфильтровать вложенный запрос Deep в graphql? - PullRequest
0 голосов
/ 19 февраля 2020

Так что я только недавно начал использовать graphql (точнее, на прошлой неделе). Я понял, что могу фильтровать запросы с аргументом 'where', и все, но я заметил, что когда я пытаюсь получить объекты из глубоко вложенного запроса, это становится несколько невозможным. Скажем, у меня есть запрос 'domestic_worker_nextofkin', который должен получить полное имя, mobile_phone1 и отношение, где 'archived' _is_null равно true, как указано ниже:

domestic_workers_nextofkin(where: {archived:{_is_null: true}}){
    full_name
    mobile_phone1
    domestic_workers_relationships{
      relationship
    }
  }
}

Приведенный выше запрос выполняет свою целевую работу и получает full_name, mobile_phone1 и отношения.

Но моя текущая проблема заключается в том, что когда этот запрос глубоко вложен, как показано ниже (код, отмеченный звездочкой):

query User($userId: Int) {
     domestic_workers_news{
          title
          date_created
          summary
          url
        }
    users_user(where: {id: {_eq: $userId}}) {
      domestic_workers_pictures(order_by: {id: desc}, limit: 1) {
        id
      }
      id
      password
      username
      first_name
      last_name
      email
      gender
      birth_date
      mobile_phone1
      mobile_phone2
      home_address_street
      home_address_town
      home_address_lga
      home_address_state
      home_address_country
      home_address_postal_code
      job_title
      workplace
      verified
      agreed_terms
      date_joined
      last_modified
      domestic_workers_workers {
        domestic_workers_pictures(order_by: {id: desc}, limit: 1) {
          id
        }
        id
        first_name
        last_name
        other_name
        email
        mobile_phone1
        mobile_phone2
        home_town
        home_state
        service
        birth_date
        gender
        date_created
        current_employer_id
        domestic_workers_relationships{
          id
          payment
          payment_currency
          start_date
          relationship
          domestic_workers_agent {
            full_name
            mobile_phone1
            domestic_workers_relationships{
              relationship
            }
            domestic_workers_pictures(order_by: {id: desc}, limit: 1) {
              id
            }
          }


**domestic_workers_nextofkin (where: {archived:{_is_null: true}}) {
        full_name
        mobile_phone1
         domestic_workers_relationships{
          relationship
        }
      }
    }**
        domestic_workers_reviews {
          id
          score
          summary
          date_created
          users_user {
            first_name
            last_name
            domestic_workers_pictures(order_by: {id: desc}, limit: 1) {
              id
            }
          }
        }
        employerRelationships: domestic_workers_relationships(order_by: {id: desc}, limit: 1, where: {relationship: {_eq: "Employer"}}) {
         end_date
         relationship
        }
      }
    }
   }

Он показывает аргумент 'where', выделенный красным, что, возможно, означает, что аргумент «где» не следует помещать туда, что мне кажется довольно запутанным. Может кто-нибудь объяснить, почему это происходит, и показать мне обходной путь, чтобы выполнить задачу, которую я пытаюсь выполнить? Спасибо.

1 Ответ

1 голос
/ 19 февраля 2020

С документы :

Аргумент where может использоваться в отношениях массива , а также для фильтрации вложенных объектов. Отношения объектов имеют только один вложенный объект, и, следовательно, они не предоставляют аргумент where.

users_user - это отношение объекта (возвращает одно объект, а не их массив), поэтому его нельзя отфильтровать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...