如果在 Gatsby 中布尔键匹配 true,则从对象内的对象数组中获取项目 - Graphql
Posted
技术标签:
【中文标题】如果在 Gatsby 中布尔键匹配 true,则从对象内的对象数组中获取项目 - Graphql【英文标题】:Get items from an array of objects inside objects if a boolean key matches true in Gatsby - Graphql 【发布时间】:2021-11-29 02:38:55 【问题描述】:我有一个 JSON 文件,我从 Gatsby 中获取数据:
[
"id": 140,
"books": [
"title": "Bobby Fischer Teaches Chess",
"recommended": true
,
"title": "The Art of War",
,
]
,
"id": 141,
"books": [
"title": "Why We Sleep",
"recommended": true
,
]
...
]
在 json 中,只有少数书籍将 recommended
键设置为 true
。其他人根本没有recommended
密钥。
通过graphql,我想获取所有将recommended
设置为true 以及id 的书籍。我尝试了以下方法:
query MyQuery
allEpisodesJson(
filter: books: elemMatch: recommended: eq: true
)
edges
node
id
books
title
recommended
这会返回:
"data":
"allEpisodesJson":
"edges": [
"node":
"id": "140",
"books": [
"title": "Bobby Fischer Teaches Chess",
"recommended": true
,
"title": "The Art of War"
"recommended": null
]
,
"node":
"id": "141",
"books": [
"title": "The Art of Computer Programming"
"recommended": true
]
]
注意节点中的第二本书id
140。结果也包括该书对象(为空)。我不想那样。
如何仅获取将recommended
明确设置为true
的书籍?
【问题讨论】:
【参考方案1】:尝试使用ne
过滤器(不等于)并反转条件:
query MyQuery
allEpisodesJson(
filter: books: elemMatch: recommended: ne: false
)
edges
node
id
books
title
recommended
或者,您可以尝试使用nin
(不在数组中)以及null
和false
(nin: [false, null]
)
【讨论】:
以上是关于如果在 Gatsby 中布尔键匹配 true,则从对象内的对象数组中获取项目 - Graphql的主要内容,如果未能解决你的问题,请参考以下文章