如何在GraphiQL上将Markdown查询转化为Strapi查询?

问题描述 投票:0回答:1

我想在GraphiQL上实现 盖茨比+斯特拉皮 开发(添加Material进行样式设计),我对Gatsby和Strapi都是新手,虽然我对React有一些基本的了解,这让我更容易上手。盖茨比入门者: https:/www.gatsbyjs.orgstartersVagr9Kgatsby-material-starter 其中包括了我想实现的Material设计,但我在改变Material设计时遇到了一些麻烦。Markdown查询到Strapi查询 以避免做大量的代码修改(帖子完全一样,但存储在Strapi中)。我在Strapi里有三个Content Types,分别对应原始启动器提供的三个不同页面。帖子, 种类标签.

这是原始的MarkdownRemark图形QL查询,包含在了 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查询的引导,因为显示的信息不一样。

我也很难区分allStrapiArticles和StrapiArticle,这些主要是什么用途?

EDIT:我一直在测试现有的查询方式,关于 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": []
    }
  }
}

对于 类别.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."
    ...
graphql markdown gatsby content-type strapi
1个回答
1
投票

确保你是通过GraphiQL底部的查询变量传递进来的。

enter image description here


首先,我会查询AllMarkdownRemark,以确保你从Gatsby获得节点。就像这样。

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

如果... slug 显示出来,那么这应该是有效的。

enter image description here

有时会有一个Slug没有被生成 这应该显示为检查allMarkdownRemark。

© www.soinside.com 2019 - 2024. All rights reserved.