gpt4 book ai didi

filter - Gatsby.js : Filter GraphQL query by nested object property

转载 作者:行者123 更新时间:2023-12-02 05:07:19 25 4
gpt4 key购买 nike

我正在一个新闻网站上工作,该网站将包含文章,每篇文章都有一个或多个各自的作者。如果您单击作者的姓名,您将进入一个页面,其中显示他们的信息以及他们贡献的文章列表。

因此,每篇文章都有一个 authors 属性,该属性又是一个 author 对象数组,其属性为:全名、slug(全名的小写版本)用破折号替换空格)等。

定义查询时是否可以按特定作者的别名过滤文章?

query authorQuery($slug: String!) {
allContentfulArticle(filter: { //not sure what to do here }) {
edges {
node {
title
slug
authors {
name
slug
}
}
}
}
}

我的另一个选择是加载所有文章,然后在组件中设置一个过滤器,如下所示:

const articles = data.allContentfulArticle.edges.filter(({ node }) => {
return node.authors.some((author) => author.slug === data.contentfulAuthor.slug);
});

这不会是世界末日,但它违背了仅加载所需数据的 GraphQL 原则。

最佳答案

如果我理解正确的话,你想在这里实现什么,你想按作者对文章进行分组。如果您查询并将过滤器应用于 allContentfulAuthor,您就可以实现这一点并请求 article 字段,如下所示:

{
allContentfulAuthor(filter: {slug: {eq: "myslug"}}) {
edges {
node {
name
article {
title
slug
}
}
}
}
}

请注意,article 名称是您的文章的 contentTypeId。

关于filter - Gatsby.js : Filter GraphQL query by nested object property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com