我正在学习CMS和GROQ的理智。我已经使用一个健壮的预定义博客模式构建了一个简单的博客。我已经成功地显示了帖子,单个帖子和作者页面,显示了姓名,图片和简历。
我想要做的是在他的页面中显示属于作者的博客帖子的列表。在posts模式中有一个对作者的引用:
{
name: 'author',
title: 'Author',
type: 'reference',
to: {type: 'author'},
},我尝试在作者模式中添加对post的数组引用,但结果是在CMS中,我需要手动向作者添加帖子。同时,我想查询作者并返回属于作者的帖子,因为在帖子模式中有对它的引用,但是找不到如何做。它可能更像是GROQ查询而不是模式问题,还是两者兼而有之?
发布于 2021-05-04 17:02:22
通过查看Query Cheat Sheet页面中的健全文档,我自己找到了答案。这不是一个方案问题,而是一个GROQ查询问题。在作者页面中,在显示作者简历等的查询中,我添加了另一个部分,其中我正在查询该作者的帖子:
// GROQ Query
sanityClient
.fetch(
`*[_type == "author"]{
name,
bio,
"authorImage": image.asset->url,
"posts": *[_type == "post" && author._ref in *[_type=="author" && name == name ]._id ]{
title,
"slug": slug.current,
}
}`
)
.then((data) => setAuthor(data[0]))
.catch(console.error);然后,我可以简单地映射到“post”,使用"slug“来构建指向单个post的URL。
{author.posts &&
author.posts.map((p) => {
return (
<li>
<a href={`/post/${p.slug}`}>{p.title}</a>
</li>
);
})
}https://stackoverflow.com/questions/67336413
复制相似问题