带有 Directus 数据的 Gatsby 4 动态路由似乎是不可能的
Gatsby 4 dynamic routes with Directus data seems imposible
我正在尝试创建动态路由。假设我们正在建立一个博客。
我从 Directus 获得的 graphql 数据如下所示:
{
Directus {
Posts {
id
slug
Title
Body
}
}
}
这似乎是个问题。无论我如何尝试创建路由,Gatsby 都坚持认为数据结构应该包含节点而不仅仅是数组。我尝试使用“文件系统路由 API”,由于缺少节点而引发错误,如果我尝试在 gatsby-node.js.[=11 中使用“createPages”定义,也会发生同样的事情=]
非常感谢任何帮助或建议...
我成功了...解决方案比我在 google 上找到的任何指南都简单,所以它来了,如果其他人遇到同样的情况。
在项目根目录中的 gatsby-node.js 文件中使用旧的 cratePage 方法。我使用了这个非常简单的代码:
const path = require("path")
exports.createPages = async ({ graphql, actions }) => {
const { data } = await graphql(`
query Projects {
Directus {
Posts {
slug
}
}
}
`)
data.Directus.Posts.forEach(post => {
actions.createPage({
path: "/blog/" + post.slug,
component: path.resolve("./src/components/blog.js"),
context: { slug: post.slug },
})
})
}
这里是 link 有用的信息:https://www.youtube.com/watch?v=L32Vx_bEZhA
我正在尝试创建动态路由。假设我们正在建立一个博客。
我从 Directus 获得的 graphql 数据如下所示:
{
Directus {
Posts {
id
slug
Title
Body
}
}
}
这似乎是个问题。无论我如何尝试创建路由,Gatsby 都坚持认为数据结构应该包含节点而不仅仅是数组。我尝试使用“文件系统路由 API”,由于缺少节点而引发错误,如果我尝试在 gatsby-node.js.[=11 中使用“createPages”定义,也会发生同样的事情=]
非常感谢任何帮助或建议...
我成功了...解决方案比我在 google 上找到的任何指南都简单,所以它来了,如果其他人遇到同样的情况。
在项目根目录中的 gatsby-node.js 文件中使用旧的 cratePage 方法。我使用了这个非常简单的代码:
const path = require("path")
exports.createPages = async ({ graphql, actions }) => {
const { data } = await graphql(`
query Projects {
Directus {
Posts {
slug
}
}
}
`)
data.Directus.Posts.forEach(post => {
actions.createPage({
path: "/blog/" + post.slug,
component: path.resolve("./src/components/blog.js"),
context: { slug: post.slug },
})
})
}
这里是 link 有用的信息:https://www.youtube.com/watch?v=L32Vx_bEZhA