首页 > 解决方案 > 页面构建后如何将页面的 URL 从 Gatsby 发送回 Strapi

问题描述

首先总结一下:我想知道如何将页面的 URL 从 Gatsby 发送回 Strapi,以便用户在创建页面时可以在不可编辑的字段中看到它。

我试图弄清楚在页面构建完成后是否可以改变 Strapi 中的字段。

我正在生成 50-60 个登录页面,在它们完成构建后会获得自己的路径。

例如:

https://test.com/newly-generated-page

我想要做的是每次用户创建新页面并将其分配给数据库中的该页面时,我想将该路径发送回 Strapi,以便用户可以在“页面路径”字段中看到它。

所以在 Strapi 中会有这样的东西:

页面路径https ://test.com/newly-generated-page

一种选择是向 React 页面模板内的端点发出 Axios PUT 请求,但是每次页面呈现时都会调用该 API。

其他选项听起来更好 - 在 Gatsby 完成构建该页面后立即执行。

使用 GQL 获取所有登录页面路径的列表(就像我在下面的代码中所做的那样)并将该信息从 Gatbsy 发送回 Strapi(该部分尚未完成)。

我已经尝试通过 gatsby-node.js 实现它,但我似乎无法找到解决方案。

我已经在 gatsby-node.js 中使用 Gatsby 的 onPostBuild API 尝试过类似的操作,我设法获得了所有路径的列表,但我不确定这是否是正确的做法:

exports.onPostBuild = ({ graphql }) => {
const getPagePaths = makeRequest(
  graphql,
    `
    {
      allSitePage {
        nodes {
          path 
          id
        }
      }
    }
    `
  ).then(result => {
    result.data.allSitePage.nodes.forEach(({ path, id }) => {
      console.log(path, id)
    })
  })

  return Promise.all([
    getPagePaths
  ])
}

因此,现在在调用 postBuild API 并构建了所有 gatsby 页面之后,我得到了所有页面路径的列表 - 我需要使用 API PUT 请求将它们发送回 Strapi 并将其分配给我上面提到的 Strapi 字段.

有人对此有任何想法吗?

我猜有 2 个选项 - Axios PUT 请求或某种突变

标签: javascriptgraphqlgatsbystrapi

解决方案


推荐阅读