如何替换GraphQL查询中的「some」参数以获取单个匹配结果?
解决方法
你当前使用的some参数是用来筛选存在至少一个匹配属性值的站点,它的作用是过滤出符合条件的站点,并不会影响返回结果里siteAttributeValues的内容——默认会返回该站点的所有属性值。
如果想仅返回与搜索条件匹配的单个siteAttributeValues结果,不需要替换some,而是要在返回的siteAttributeValues字段上添加过滤条件,同时限制返回数量:
{ "query": "query($search: String!) { sites ( take: 10, where: { siteAttributeValues: { some: { stringValue: { like: $search } } } } ) { items { id name siteAttributeValues( where: { stringValue: { like: $search } }, take: 1 ) { id stringValue } } } }", "variables": {"search": "%test-erp2%"} }
关键修改说明:
- 保留
where中的some:确保只查询包含匹配属性值的站点,避免返回完全无关的站点 - 给
siteAttributeValues字段添加where过滤:精准筛选出符合搜索条件的属性值 - 添加
take: 1:强制每个站点仅返回单个匹配的属性值(如果有多个匹配结果,只取第一条)
如果你是想筛选仅拥有一个匹配属性值的站点(而非返回单个属性值),可以在where中结合count条件(需你的GraphQL API支持该参数,比如Prisma):
where: { siteAttributeValues: { some: { stringValue: { like: $search } }, count: { equals: 1 } } }
内容的提问来源于stack exchange,提问作者zhustav
相关产品推荐
相关产品推荐

