我是 Gridsome(和 GraphQL)的新手,我想构建以下内容。我有员工与项目的 n 对 n 关系,并希望为每个员工生成一个页面,列出该员工从事的所有项目。我使用 Pages API 创建页面,这是可以工作的部分。但是,传递上下文/列出每个员工的项目是行不通的。
所有数据都在标记中,如下所示: 项目:
---
name: "Project 1"
...
---
雇员:
---
name: "Employee 1"
projects:
- name: "Project 1"
- name: "Project 2"
---
gridsome.server.js:
api.createPages(async ({ graphql, createPage }) => {
const { data } = await graphql(`{
allEmployee {
edges {
node {
id
name
projects {
name
}
}
}
}
}`)
data.allEmployee.edges.forEach(({ node }) => {
createPage({
path: `/${node.name}`,
component: './src/templates/Employee.vue',
context: {
id: node.id,
name: node.name,
projectsWorkedOn: node.projects
}
})
})
})
Employee.vue 中的页面查询:
<page-query>
query EmployeeProjects ($projectsWorkedOn: [String]) {
allProject (filter: { name: { in: $projectsWorkedOn } } ) { //how to use the $projectsWorkedOn object here?
edges {
node {
id
name
}
}
}
}
</page-query>
现在这不起作用,至少我正在尝试将对象用作数组,但我确信它还有其他问题。我希望有人能指出我正确的方向,不幸的是 Gridsome 文档很浅。