Рейтинг:0

Filtering on child properties in GraphQL

флаг hu

I am using GraphQL to get a list of upcoming events. I am having trouble finding the correct way to filter on the date value which is a child of my date field.

The query, which works:

query getUpcomingEvents {
  nodeQuery(
    filter: {
      conditions: [
        {operator: EQUAL, field: "type", value: ["ain_event"]},
        {operator: EQUAL, field: "status", value: ["1"]} 
      ]
    }
  )
  {
    entities {
      entityLabel
      ...on NodeAinEvent {
        fieldAinEventLocation
        fieldAinEventDate {
          startDate
          endDate
        }
        fieldAinLink {
          uri
        }
      }
    }
  }
}

I get this response:

 {
  "data": {
    "nodeQuery": {
      "entities": [
        {
          "entityLabel": "EAA AIRVENTURE",
          "fieldAinEventLocation": "OshKosh, WI",
          "fieldAinEventDate": {
            "startDate": "2021-07-26 12:00:00 UTC",
            "endDate": "2021-08-01 12:00:00 UTC"
          },
          "fieldAinLink": {
            "uri": "http://www.eaa.org/en/airventure"
          }
        },
        {
          "entityLabel": "FlightSimExpo",
          "fieldAinEventLocation": "San Diego, CA",
          "fieldAinEventDate": {
            "startDate": "2021-09-24 12:00:00 UTC",
            "endDate": "2021-09-26 12:00:00 UTC"
          },
          "fieldAinLink": {
            "uri": "http://www.flightsimexpo.com/"
          }
        },
        {
          "entityLabel": "Sun 'n Fun",
          "fieldAinEventLocation": "Lakeland, FL",
          "fieldAinEventDate": {
            "startDate": "2020-03-31 12:00:00 UTC",
            "endDate": "2020-04-05 12:00:00 UTC"
          },
          "fieldAinLink": {
            "uri": "https://www.flysnf.org/"
          }
        }
      ]
    }
  }
}

I tried adding this, to no avail:

{operator: GREATER_THAN_OR_EQUAL, field: "fieldAinEventDate.startDate", value: ["2021-07-25 12:00:00 UTC"]}
Kevin avatar
флаг in
Это не диапазон дат или что-то в этом роде? Является ли «значение» правильным свойством?
флаг hu
@Kevin см. редактирование - и ошибка, которую я получаю, это просто «Внутренняя ошибка сервера»
Kevin avatar
флаг in
Что такое зарегистрированная ошибка?
флаг hu
Что ж, я запускаю это в Drupal's GraphiQL Explorer, поэтому все, что у меня есть, это Watchdog, указывающий «Вызов функции-члена getColumns() на bool»
Kevin avatar
флаг in
Это звучит похоже: https://github.com/drupal-graphql/graphql/issues/710
Рейтинг:1
флаг hu

Нашел ответ - видимо поля по разному указаны в условиях фильтра. Это работает:

{оператор: GREATER_THAN_OR_EQUAL, поле: "field_ain_event_date", значение: ["2021-07-25 12:00:00 UTC"]}
Рейтинг:0
флаг in

Важная информация здесь исходит от комментарий в вопросе, на который ссылается @Kevin.

Вы можете запрашивать только поля, доступные в сущности.

Это связано с тем, что ваш запрос в конечном итоге преобразуется в объектный запрос. Вы должны ссылаться на поля и их свойства так, как их понимает Drupal, а не так, как они отображаются при возврате из запроса GraphQL.

Ответить или комментировать

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