首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sanity io按作者显示博客帖子

Sanity io按作者显示博客帖子
EN

Stack Overflow用户
提问于 2021-04-30 23:18:40
回答 1查看 387关注 0票数 0

我正在学习CMS和GROQ的理智。我已经使用一个健壮的预定义博客模式构建了一个简单的博客。我已经成功地显示了帖子,单个帖子和作者页面,显示了姓名,图片和简历。

我想要做的是在他的页面中显示属于作者的博客帖子的列表。在posts模式中有一个对作者的引用:

代码语言:javascript
复制
{
  name: 'author',
  title: 'Author',
  type: 'reference',
  to: {type: 'author'},
},

我尝试在作者模式中添加对post的数组引用,但结果是在CMS中,我需要手动向作者添加帖子。同时,我想查询作者并返回属于作者的帖子,因为在帖子模式中有对它的引用,但是找不到如何做。它可能更像是GROQ查询而不是模式问题,还是两者兼而有之?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-04 17:02:22

通过查看Query Cheat Sheet页面中的健全文档,我自己找到了答案。这不是一个方案问题,而是一个GROQ查询问题。在作者页面中,在显示作者简历等的查询中,我添加了另一个部分,其中我正在查询该作者的帖子:

代码语言:javascript
复制
// 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。

代码语言:javascript
复制
{author.posts &&
  author.posts.map((p) => {
    return (
      <li>
        <a href={`/post/${p.slug}`}>{p.title}</a>
      </li>
    );                  
   })
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67336413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档