Я использую 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!