Как преобразовать запрос Markdown в запрос Strapi на GraphiQL? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь получить в свои руки Gatsby + Strapi разработка (добавление материала для стайлинга), я новичок в Gatsby и Strapi, хотя у меня есть некоторые базовые c знания React и это облегчает путь. Я использую Gatsby Starter : https://www.gatsbyjs.org/starters/Vagr9K/gatsby-material-starter/, который включает в себя дизайн материала, который я пытаюсь достичь, но у меня возникают некоторые проблемы при изменении запросов Markdown на Strapi запрашивает , чтобы не вносить много изменений в код (записи точно такие же, но хранятся в Strapi). У меня есть три типа контента в Strapi, соответствующие трем различным страницам, которые предоставляет первоначальный стартер: Публикация , Категория и Метка .

This исходный запрос графа MarkdownRemark включен в шаблон post.jsx :

query BlogPostBySlug($slug: String!) {
  markdownRemark(fields: { slug: { eq: $slug } }) {
    html
    timeToRead
    excerpt
    frontmatter {
      title
      cover
      date
      category
      tags
    }
    fields {
      slug
      date
    }
  }
}

Как я могу изменить его для получения той же информации из Strapi? Я действительно новичок в этом мире Strapi, поэтому у меня много сомнений в GraphQL, так как я не могу следовать руководству по запросу Markdown, потому что отображаемая информация не совпадает.

I У меня также возникают проблемы с различием между allStrapiArticle и StrapiArticle, какова основная цель этих?

РЕДАКТИРОВАТЬ: я проверял существующие запросы на GraphiQL , чтобы проверить, что они возвращают, и это Вот что я вижу:

Для запроса tag.jsx :

query TagPage($tag: String) {
  allMarkdownRemark(
    limit: 1000
    sort: { fields: [fields___date], order: DESC }
    filter: { frontmatter: { tags: { in: [$tag] } } }
  ) {
    totalCount
    edges {
      node {
        fields {
          slug
          date
        }
        excerpt
        timeToRead
        frontmatter {
          title
          tags
          cover
          date
        }
      }
    }
  }
}

GraphiQL ничего не возвращает:

{
  "data": {
    "allMarkdownRemark": {
      "totalCount": 0,
      "edges": []
    }
  }
}

Для category.jsx запрос:

query CategoryPage($category: String) {
  allMarkdownRemark(
    limit: 1000
    sort: { fields: [fields___date], order: DESC }
    filter: { frontmatter: { category: { eq: $category } } }
  ) {
    totalCount
    edges {
      node {
        fields {
          slug
          date
        }
        excerpt
        timeToRead
        frontmatter {
          title
          tags
          cover
          date
        }
      }
    }
  }
}

В этом случае все работает нормально, и он получает данные статьи.

И для случая запроса, который я добавил В качестве примера в этом сообщении (верхняя часть вопроса) я получаю следующую ошибку:

 "errors": [
    {
      "message": "Variable \"$slug\" of required type \"String!\" was not provided."
    ...

1 Ответ

1 голос
/ 28 апреля 2020

Убедитесь, что вы передаете переменную через переменные запроса внизу GraphiQL.

enter image description here


Сначала я бы запросил AllMarkdownRemark чтобы убедиться, что вы получаете узлы от Гэтсби. Что-то вроде:

query MyQuery {
  allMarkdownRemark {
    edges {
      node {
        fields {
          slug
        }
        frontmatter {
          title
        }
      }
    }
  }
}

Если появляется slug, это должно работать:

enter image description here

Иногда слизень не генерируется. Который должен показать проверку всех MarkdownRemark.

...