next.js - 如何使用 Groq 显示引用的对象
问题描述
我有一个“成功案例”页面(/cases),当我进入详细信息页面时,我有类似/cases/some-slug 的内容。
“案例”模式引用了一个品牌,如下所示:
{title: 'Case Brand', name: 'caseBrand', type: 'reference',
to: [
{type: 'brands'}
]
},
在我找到的所有示例中,我必须将品牌与案例联系起来。但是,如果我将每个案例都链接到一个特定的品牌,它会更有用。(另一种我必须附加到品牌的方式,多个案例)。
所以,下面的例子我做了相反的方式(这不方便我构建的结构):
const getCaseBrand = `*[_type=="cases" && caseSlug.current == "${slug}" ]{
_id,caseSlug,
"brand": *[_type =="brands" && references(^._id)]{
_id,
brandName,
brandDescription,
brandLogo
}
}`;
知道如何构建我需要的方式吗?基本上是:
- 根据“案例”模式的引用获取caseBrand对象。
- 我将在个别案例页面中显示品牌名称和徽标。
太感谢了。
解决方案
我找到了答案,它比我想象的要简单,只需在主查询中添加一个数组即可。
*[_type == 'cases' && caseSlug.current == "amazon-prime-india"]
{...,
caseBrand -> {
brandName,
brandImage
},
caseAgency -> {
agencyName,
agencyLogo
}
}
我的模式“案例”已经引用了品牌和代理。所以基本上,我需要做的是以下几点:
- 从特定案例中获取所有信息(这是主要查询)
- 添加具有引用类型的数组