Как передать переменную из ‘context’ в запрос страницы? | Gatsby

#gatsby

#gatsby

Вопрос:

Пытаясь передать переменную ‘context’ в запрос страницы, я получаю сообщение об ошибке, сообщающее мне, что переменная не предоставлена.

Из моего gatsby-node.js файла:

 createPage({
  path: `/portfolio/${pg.order}`,
  component: require.resolve("./src/pages/portfolio.js"),
  context: { pgNum: pg.order },
})
  

Запрос моей страницы:

 export const query = graphql`
  query($pgNum: Int!) {
    strapiPortfolioPages(order: { eq: $pgNum }) {
      layer
      widths
      ...
    }
  }
  

Гэтсби сообщает мне: «Переменная «$pgNum» требуемого типа «Int!» не была предоставлена».

Ответ №1:

«Переменная «$pgNum» требуемого типа «Int!» не была предоставлена».

Это означает, что ваша $pgNum переменная не обнуляема из-за Int! поскольку восклицательный знак ( ! ) обозначает ненулевое (обязательное) значение в GraphQL (для получения дополнительной информации проверьте документацию Schema and Types GraphQL). Другими словами, ваш запрос передает null значение в переменную, не обнуляемую, так что у вас где-то есть null значение.

Простой способ обойти это (после проверки ваших значений) — убрать возможность обнуления запроса с помощью:

 export const query = graphql`
  query($pgNum: Int) {
    strapiPortfolioPages(order: { eq: $pgNum }) {
      layer
      widths
      ...
    }
  }