【问题标题】:GraphQL query filtering with Strapi V4 and Gatbsy使用 Strapi V4 和 Gatsby 进行 GraphQL 查询过滤
【发布时间】:2022-01-14 02:33:07
【问题描述】:

自从 Strapi 更改为从未使用过的 V4 结构后,它破坏了我用来根据从 Strapi 返回的数据创建页面的 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
        }
      }
    }
  }

这似乎返回了一个 undefined 值。

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

基本上,我试图根据从 Gatsby-node.js 作为上下文传入的对象 ID 访问标题、作者和正文属性

【问题讨论】:

    标签: reactjs graphql gatsby strapi


    【解决方案1】:

    尚无可用/兼容 Strapi v4 插件 (gatsby-source-strapi) 的版本,您可以在存储库中看到:

    ⚠️这个版本的gatsby-source-strapi只兼容Strapi 目前v3。我们目前正在开发 v4 兼容版本。

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

    【讨论】:

    • 这很烦人!但是谢谢你的帮助。是否有执行回滚的特定命令?更改包版本和运行 yarn 只允许我切换到其他 v4.0.x 版本,而且似乎 V4 创建的文件结构与 V3 不兼容。编辑:我尝试擦除 straps 项目文件夹并创建一个新文件夹,但它会自动默认为 v4。有没有办法将strapi版本附加到strap create命令?
    • 你可以尝试使用这个fork:github.com/relate-app/gatsby-source-strapi我没用过,但它似乎工作得很好
    猜你喜欢
    • 1970-01-01
    • 2021-04-13
    • 2018-04-14
    • 2021-06-20
    • 2020-12-04
    • 2020-10-25
    • 2021-06-06
    • 2019-01-22
    • 2020-03-19
    相关资源
    最近更新 更多