gatsbyjs从graphcms查询数据并带有状态条件抛出错误对象

时间:2018-08-30 06:40:49

标签: graphql gatsby

您好,我有一个gatsbyjs网站,我试图从graphcms中提取模型“ job”的数据。如果我拉alljob。该查询工作正常,但如果我尝试放置条件以仅拉出状态字段已发布的作业。它没有提取任何数据并引发错误:

  

TypeError:无法读取未定义的属性'allJob'

这是我的gatsby-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;
};

1 个答案:

答案 0 :(得分:0)

盖茨比不了解allJob(where: {status: PUBLISHED}),因为它是错误的语法。

您可能想改用filter。我无法提供示例,因为我不知道其结构如何,但是可以建议您运行gatsby develop并转到GraphiQL(http://localhost:8000/___graphql)并使用其自动完成功能({{1} })以获取正确的过滤器。

更多信息:https://www.gatsbyjs.org/docs/graphql-reference/#filter