Cas*_*mir 5 contentful graphql graphql-js gatsby
我有一个 Gatsby GraphQL 查询,用于获取按日期排序并按类别过滤的帖子列表。
{
posts: allContentfulPost(
sort: {fields: [date], order: DESC},
filter: {category: {slug: {eq: $slug}}}
) {
edges {
node {
title {
title
}
date
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在什么时候$slug是空字符串"",我明白了
{
"data": {
"posts": null
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法获取所有帖子?
您可以使用正则表达式过滤器来发挥您的优势。如果您传递空表达式,则将返回所有帖子,因为所有内容都会匹配。
query Posts($slugRegex: String = "//"){
posts: allContentfulPost(
sort: {fields: [date], order: DESC},
filter: {category: {slug: {eq: $slugRegex}}}
) {
# Rest of the query.
}
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,将返回所有帖子($slugRegex如果未传递任何内容,则为空正则表达式)。当$slugRegex成为有意义的表达式时,只会显示匹配的帖子。
至于传递值,我假设您正在使用它gatsby-node.js来创建页面。在这种情况下,事情就这么简单:
query Posts($slugRegex: String = "//"){
posts: allContentfulPost(
sort: {fields: [date], order: DESC},
filter: {category: {slug: {eq: $slugRegex}}}
) {
# Rest of the query.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5395 次 |
| 最近记录: |