gatsby js 从 graphcms 查询数据,状态条件抛出错误对象未定义
gatsbyjs query data from graphcms with status condition throw error object undefiend
你好,我有一个 gatsbyjs 网站,我试图从 graphcms 中提取模型 'job' 的数据。如果我拉所有工作。查询工作正常,但如果我尝试设置条件以仅拉取状态字段已发布的作业。它没有提取任何数据并抛出错误:
TypeError: Cannot read property 'allJob' of undefined
这是我的盖茨比-node.js:
const path = require(`path`);
const makeRequest = (graphql, request) => new Promise((resolve, reject) => {
resolve(
graphql(request).then(result => {
if (result.errors) {
reject(result.errors)
}
return result;
})
)
});
exports.createPages = ({ boundActionCreators, graphql }) => {
const { createPage } = boundActionCreators;
const getJobs = makeRequest(graphql, `
{
allJob(where: {status: PUBLISHED}) {
edges{
node{
id
}
}
}
}
`).then(result => { result.data.allJob.edges.forEach(({ node }) => {
createPage({
path: `/job/${node.id}`,
component: path.resolve(`src/templates/jobTemplate.js`),
context: {
id: node.id,
}
})
console.log(node.id)
})
}
)
return getJobs;
};
Gatsby 不理解 allJob(where: {status: PUBLISHED})
,因为它是错误的语法。
您可能希望使用 filter
。我无法给你举个例子,因为我不知道结构是怎样的,但可以建议你 运行 gatsby develop
并转到 GraphiQL (http://localhost:8000/___graphql
) 并使用它的自动完成功能 ( Ctrl + Space
) 以获得正确的过滤器。
更多信息:https://www.gatsbyjs.org/docs/graphql-reference/#filter
你好,我有一个 gatsbyjs 网站,我试图从 graphcms 中提取模型 'job' 的数据。如果我拉所有工作。查询工作正常,但如果我尝试设置条件以仅拉取状态字段已发布的作业。它没有提取任何数据并抛出错误:
TypeError: Cannot read property 'allJob' of undefined
这是我的盖茨比-node.js:
const path = require(`path`);
const makeRequest = (graphql, request) => new Promise((resolve, reject) => {
resolve(
graphql(request).then(result => {
if (result.errors) {
reject(result.errors)
}
return result;
})
)
});
exports.createPages = ({ boundActionCreators, graphql }) => {
const { createPage } = boundActionCreators;
const getJobs = makeRequest(graphql, `
{
allJob(where: {status: PUBLISHED}) {
edges{
node{
id
}
}
}
}
`).then(result => { result.data.allJob.edges.forEach(({ node }) => {
createPage({
path: `/job/${node.id}`,
component: path.resolve(`src/templates/jobTemplate.js`),
context: {
id: node.id,
}
})
console.log(node.id)
})
}
)
return getJobs;
};
Gatsby 不理解 allJob(where: {status: PUBLISHED})
,因为它是错误的语法。
您可能希望使用 filter
。我无法给你举个例子,因为我不知道结构是怎样的,但可以建议你 运行 gatsby develop
并转到 GraphiQL (http://localhost:8000/___graphql
) 并使用它的自动完成功能 ( Ctrl + Space
) 以获得正确的过滤器。
更多信息:https://www.gatsbyjs.org/docs/graphql-reference/#filter