【发布时间】:2021-04-07 05:27:32
【问题描述】:
我正在尝试过滤我所有的降价页面,寻找与某个 category(在降价 frontmatter 中指定)匹配的页面以及不是当前访问的页面的页面。尽管从 markdown 创建的所有页面都收到了与 allMarkdownRemark 相同的结果,但没有过滤任何结果。
我想知道如何让所有页面对allMarkdownRemark 产生不同的结果,并希望过滤allMarkdownRemark 中的结果
我的页面查询看起来像
export const pageQuery = graphql`
query ArticleQuery($path: String, $category: String, $title: String) {
allMarkdownRemark(
filter: {
frontmatter: {
category: {eq: $category},
title: {ne: $title}
}
},
sort: {
order: DESC, fields: [frontmatter___date]
}
) {
...
我的gatsby-node.js 看起来像
const { createFilePath } = require(`gatsby-source-filesystem`);
const { fmImagesToRelative } = require('gatsby-remark-relative-images-v2');
const path = require("path");
exports.createPages = async ({ actions: { createPage }, graphql }) => {
const postTemplate = path.resolve(`src/components/ArticlePage.jsx`);
const result = await graphql(`
{
allMarkdownRemark(
sort: { order: DESC, fields: [frontmatter___title] }
) {
edges {
node {
fields {
slug
}
frontmatter {
category
title
}
}
}
}
}
`);
if (result.errors) {
return Promise.reject(result.errors);
};
result.data.allMarkdownRemark.edges.forEach(({ node }) => {
createPage({
path: `${node.fields.slug}`,
category: `${node.frontmatter.category}`,
title: `${node.frontmatter.title}`,
component: postTemplate,
context: {node}
});
});
};
exports.onCreateNode = ({ node, getNode, actions }) => {
fmImagesToRelative(node);
if (node.internal.type === `MarkdownRemark`){
actions.createNodeField({
node,
name: `slug`,
value: createFilePath({ node, getNode, basePath: `pages`, trailingSlash: true }),
});
}
};
所有降价文件都包含类似的内容
---
title: "My title"
category: "My category"
---
【问题讨论】:
-
问题/问题是什么?
-
我更新了我的问题