使用 Strapi V4 和 Gatsby 进行 GraphQL 查询过滤

GraphQL query filtering with Strapi V4 and Gatbsy

自从 Strapi 更改为它从不的 V4 结构后,它破坏了我用来根据从 Strapi return编辑的数据创建页面的 V3 查询。

我的 Gatsby-node.js 文件中使用 createPages 功能的代码如下:

const path = require(`path`)

exports.createPages = async ({ graphql, actions }) => {
  const { createPage } = actions

  const result = await graphql(`
    {
      allStrapiArticles {
        edges {
          node {
            data {
              id
              attributes {
                title
              }
            }
          }
        }
      }
    }
  `)

  result.data.allStrapiArticles.edges[0].node.data.forEach(article => {
    createPage({
      path: `/blog/${article.attributes.title.replace(" ", "_")}`,
      component: path.resolve(`src/templates/blog/index.js`),
      context: {
        id: article.id,
      },
    })
  })
}

然后在页面模板中我使用以下查询,其中我引用作为上下文传入的 id:

export const query = graphql`
  query ($id: String!) {
    strapiArticles(id: { eq: $id }) {
      data {
        id
        attributes {
          title
          author
          body
        }
      }
    }
  }

这似乎是 return 一个未定义的值。

是否有人熟悉如何更改此查询以符合 Strapi 的新结构?

基本上,我试图根据从 Gatsby-node.js

作为上下文传入的 object id 来访问标题、作者和 body 属性

Strapi v4 插件 (gatsby-source-strapi) 还没有版本 available/compatible,如您在存储库中所见:

⚠️ This version of gatsby-source-strapi is only compatible with Strapi v3 at the moment. We are currently working on a v4 compatible version.

也就是说,与此同时,您唯一的机会是回滚到 v3 并等待兼容的插件版本(如果可以的话)。