为什么无法在graphql中过滤深层嵌套查询?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么无法在graphql中过滤深层嵌套查询?相关的知识,希望对你有一定的参考价值。
所以我最近才开始使用graphql(准确地说是上周)。我有一个能够使用“ where”参数过滤查询的概念,但我注意到当我尝试从深度嵌套查询中获取对象时,这几乎变得不可能。因此,说我有“ domestic_worker_nextofkin”查询,该查询应获取全名,mobile_phone1和“已存档” _is_null等于true的关系,如下所示:
domestic_workers_nextofkin(where: archived:_is_null: true)
full_name
mobile_phone1
domestic_workers_relationships
relationship
上面的查询完成了预期的工作,并获得了全名,mobile_phone1和关系。
但是我当前的问题是,当此查询深度嵌套时,如下所示(带星号的代码):
query User($userId: Int)
domestic_workers_news
title
date_created
summary
url
users_user(where: id: _eq: $userId)
domestic_workers_pictures(order_by: id: desc, limit: 1)
id
id
password
username
first_name
last_name
email
gender
birth_date
mobile_phone1
mobile_phone2
home_address_street
home_address_town
home_address_lga
home_address_state
home_address_country
home_address_postal_code
job_title
workplace
verified
agreed_terms
date_joined
last_modified
domestic_workers_workers
domestic_workers_pictures(order_by: id: desc, limit: 1)
id
id
first_name
last_name
other_name
email
mobile_phone1
mobile_phone2
home_town
home_state
service
birth_date
gender
date_created
current_employer_id
domestic_workers_relationships
id
payment
payment_currency
start_date
relationship
domestic_workers_agent
full_name
mobile_phone1
domestic_workers_relationships
relationship
domestic_workers_pictures(order_by: id: desc, limit: 1)
id
**domestic_workers_nextofkin (where: archived:_is_null: true)
full_name
mobile_phone1
domestic_workers_relationships
relationship
**
domestic_workers_reviews
id
score
summary
date_created
users_user
first_name
last_name
domestic_workers_pictures(order_by: id: desc, limit: 1)
id
employerRelationships: domestic_workers_relationships(order_by: id: desc, limit: 1, where: relationship: _eq: "Employer")
end_date
relationship
它以红色突出显示“ where”参数,这可能意味着不应将“ where”参数放在此处,这对我来说似乎很混乱。谁能解释为什么会发生这种情况,并向我展示解决方法以完成我要执行的任务?谢谢。
答案
来自the docs:
where参数也可以在数组关系中使用,以过滤嵌套对象。 对象关系仅具有一个嵌套对象,因此它们不公开where参数。
users_user
是对象关系(它返回单个对象而不是它们的数组),因此无法对其进行过滤。
以上是关于为什么无法在graphql中过滤深层嵌套查询?的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS Amplify GraphQL DynamoDB 中按另一个表的字段(也称为交叉表或嵌套过滤)过滤列表查询
在 spring boot 中使用 graphql-java 我无法在嵌套列表中查询数据