在GraphQL中,如何在查询级别丢弃空数组(而不是在查询之后循环) 背景
我有一个通过GraphQL获得的菜单。它最多可以在两个级别内嵌套项目。 当我检索数据时,如果没有子链接,我会得到空数组 查询 我的问题是这样的在GraphQL中,如何在查询级别丢弃空数组(而不是在查询之后循环) 背景,graphql,Graphql,我有一个通过GraphQL获得的菜单。它最多可以在两个级别内嵌套项目。 当我检索数据时,如果没有子链接,我会得到空数组 查询 我的问题是这样的 { label url links { label url links { label url } } } { "data": { "menu": [ { "label": "menu item 1", "url": "htt
{
label
url
links {
label
url
links {
label
url
}
}
}
{
"data": {
"menu": [
{
"label": "menu item 1",
"url": "https://my-site",
"links": []
},
{
"label": "menu item 2",
"url": "https://my-site/2",
"links": []
},
{
"label": "menu item with sub items",
"url": "https://my-site/got-subs",
"links": [
{
"label": "sub menu item 1",
"url": "https://my-site/got-subs/1",
"links": []
},
{
"label": "sub menu item 2",
"url": "https://my-site/got-subs/2",
"links": []
}
]
},
]
}
}
因此,在每一个层次上,都有可能在下面有一系列额外的链接
资料
当我检查数据时,它看起来像这样
{
label
url
links {
label
url
links {
label
url
}
}
}
{
"data": {
"menu": [
{
"label": "menu item 1",
"url": "https://my-site",
"links": []
},
{
"label": "menu item 2",
"url": "https://my-site/2",
"links": []
},
{
"label": "menu item with sub items",
"url": "https://my-site/got-subs",
"links": [
{
"label": "sub menu item 1",
"url": "https://my-site/got-subs/1",
"links": []
},
{
"label": "sub menu item 2",
"url": "https://my-site/got-subs/2",
"links": []
}
]
},
]
}
}
问题:
如何在查询级别删除空数组,使数据看起来像这样
{
"data": {
"menu": [
{
"label": "menu item 1",
"url": "https://my-site",
},
{
"label": "menu item 2",
"url": "https://my-site/2",
},
{
"label": "menu item with sub items",
"url": "https://my-site/got-subs",
"links": [
{
"label": "sub menu item 1",
"url": "https://my-site/got-subs/1",
},
{
"label": "sub menu item 2",
"url": "https://my-site/got-subs/2",
}
]
},
]
}
}
很抱歉你被否决了。一些人似乎认为,如果一个问题没有答案,就需要否决它。因此,简单的回答是,这是不可能做到的。GraphQL是关于返回的JSON对于客户端是可预测的。如果列表为空,则可以使返回类型为null,并且解析器可以返回
null
。但在大多数客户机代码中,当空数组正常工作时,这将引入额外的空检查(循环不会运行单个迭代)。为什么要将其从回复中删除?Hi@Herku感谢您添加评论。我想删除空数据以使测试更容易,因为模拟数据需要填写所有空数组和空值,这非常严格。但我可以像你说的那样加上额外的支票。如果你把你的评论作为回答,我将欣然接受。谢谢。很抱歉你被否决了。一些人似乎认为,如果一个问题没有答案,就需要否决它。因此,简单的回答是,这是不可能做到的。GraphQL是关于返回的JSON对于客户端是可预测的。如果列表为空,则可以使返回类型为null,并且解析器可以返回null
。但在大多数客户机代码中,当空数组正常工作时,这将引入额外的空检查(循环不会运行单个迭代)。为什么要将其从回复中删除?Hi@Herku感谢您添加评论。我想删除空数据以使测试更容易,因为模拟数据需要填写所有空数组和空值,这非常严格。但我可以像你说的那样加上额外的支票。如果你把你的评论作为回答,我将欣然接受。谢谢