Puncte:0

Filtering on child properties in GraphQL

drapel 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
drapel in
Nu este un interval de date sau ceva? Este „valoarea” proprietatea potrivită?
drapel hu
@Kevin vezi editarea - iar eroarea pe care o primesc este doar „Eroare internă de server”
Kevin avatar
drapel in
Care este eroarea înregistrată?
drapel hu
Ei bine, rulez asta în Drupal GraphiQL Explorer, așa că tot ce am este Watchdog care indică „Apel la o funcție membru getColumns() pe bool”
Kevin avatar
drapel in
Sună legat de: https://github.com/drupal-graphql/graphql/issues/710
Puncte:1
drapel hu

Am găsit răspunsul - se pare că câmpurile sunt referite diferit în condițiile de filtrare. Aceasta funcționează:

{operator: GREATER_THAN_OR_EQUAL, câmp: "field_ain_event_date", valoare: ["2021-07-25 12:00:00 UTC"]}
Puncte:0
drapel in

Informațiile importante de aici provin de la un comentariu în problema la care face referire @Kevin.

Puteți interoga doar câmpurile disponibile pe entitate.

Acest lucru se datorează faptului că interogarea dvs. este convertită în cele din urmă într-un entityQuery. Trebuie să faceți referire la câmpuri și proprietățile lor așa cum le înțelege Drupal, nu cum sunt afișate atunci când sunt returnate dintr-o interogare GraphQL.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.