gatsbyjs запрашивает данные из graphcms с условием состояния, выбрасывает объект ошибки undefiend - PullRequest
0 голосов
/ 30 августа 2018

Здравствуйте, у меня есть сайт gatsbyjs, на котором я пытался получить данные модели 'job' из graphcms. если я потяну 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 голосов
/ 30 августа 2018

Гэтсби не понимает allJob(where: {status: PUBLISHED}), так как это неправильный синтаксис.

Вместо этого вы хотите использовать filter. Я не могу привести вам пример, поскольку я не знаю, какова структура, но могу посоветовать вам запустить gatsby develop и перейти к GraphiQL (http://localhost:8000/___graphql) и использовать функцию автозаполнения (Ctrl + Space), чтобы получить правильные фильтр.

Дополнительная информация: https://www.gatsbyjs.org/docs/graphql-reference/#filter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...