Борьба с фильтрацией данных Drupal в запросе Gatsby GraphQL - PullRequest
0 голосов
/ 16 апреля 2020

Я использую Drupal 8 JSON: API для предоставления данных на мой сайт Gatsby. Я построил запрос GraphQL, чтобы выставить список «офицеров», который содержит поле с отношением к набору «периодов обслуживания». Данные, возвращаемые API, верны, но я хотел бы отфильтровать только одну указанную c дочернюю запись (период обслуживания) и не могу понять, как это сделать. Мой запрос:

  officerList: allGroupContentLodgeGroupNodeOfficer(filter: {relationships: {entity_id: {relationships: {field_position: {elemMatch: {relationships: {field_service_period: {drupal_internal__tid: {eq: 203}}}}}}}}}) {
    edges {
      node {
        r: relationships {
          entity_id {
            r: relationships {
              field_position {
                r: relationships {
                  field_position {
                    name
                  }
                  field_service_period {
                    name
                    drupal_internal__tid
                  }
                }
              }
            }
            title
          }
        }
      }
    }
  }
}

Результирующий набор JSON:

  "data": {
    "officerList": {
      "edges": [
        {
          "node": {
            "r": {
              "entity_id": {
                "r": {
                  "field_position": [
                    {
                      "r": {
                        "field_position": {
                          "name": "Governor"
                        },
                        "field_service_period": {
                          "name": "2018 - 2019",
                          "drupal_internal__tid": 203
                        }
                      }
                    },
                    {
                      "r": {
                        "field_position": {
                          "name": "Junior Past Governor"
                        },
                        "field_service_period": {
                          "name": "2019 - 2020",
                          "drupal_internal__tid": 204
                        }
                      }
                    }
                  ]
                },
                "title": "Tom Jones"
              }
            }
          }
        }
      ]
    }
  }
}

Я понимаю, что результирующий набор правильный, потому что дочерний элемент находится в пределах root. Однако я не вижу, как отфильтровать полный запрос, чтобы включить только определенные дочерние записи. Это вообще возможно? Я видел некоторые реализации GraphQL, которые, кажется, позволяют размещать фильтры на дочерних элементах, но я не думаю, что это возможно в Gatsby.

Я искал повсюду возможные решения и несколько дней бился головой о стену. Любое понимание очень ценится!

TIA!

...