我正在使用Drupal 8 JSON:API将数据公开给我的Gatsby网站。我建立了一个GraphQL查询,以显示“官员”列表,其中包含与一组“服务期”相关的字段。 API返回的数据是正确的,但是我只想过滤一个特定的子记录(服务期),并且不知道该怎么做。我的查询是:
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"
}
}
}
}
]
}
}
}
我知道结果集是正确的,因为孩子在根内。但是,我看不到如何过滤完整查询以仅包括某些子记录。这有可能吗?我已经看到了GraphQL的某些实现,这些实现似乎允许将过滤器放置在子对象上,但是我认为在盖茨比中这是不可能的。
我到处都在寻找可能的解决方案,并且几天来一直在脑海中撞。非常感谢任何见识!
TIA!