映射来自markdown文件的列表的graphql输出

时间:2019-04-04 14:18:00

标签: graphql markdown gatsby remarkjs

我正在使用Gatsby.js和GraphQL从markdown文件中检索数据。 markdown文件的内容结构为:

---
title: abc
---

- heading A
 - sub-heading A
 - sub-heading B
- heading B
 - sub-heading A
 - sub-heading B
 - sub-heading C
...

使用插件gatsby-transformer-remark,我得到的graphql输出是这样的:

{
  "data": {
    "allMarkdownRemark": {
      "edges": [
        {
          "node": {
            "internal": {
              "content": "\n- heading A\n  - sub-heading An  - sub-heading B\n- heading B ....

是否有可能获得降价列表的数组甚至对象,以便我可以在JavaScript代码中的值上进行映射(循环)?

谢谢

1 个答案:

答案 0 :(得分:1)

您要建立目录吗? Gatsby的备注插件自动generate a table of content for you,您还可以传递一些选项来对其进行修改。

从文档复制:

{
  allMarkdownRemark {
    edges {
      node {
        html
        tableOfContents(
          pathToSlugField: "frontmatter.path"
          heading: "only show toc from this heading onwards"
          maxDepth: 2
        )
        frontmatter {
          # Assumes you're using path in your frontmatter.
          path
        }
      }
    }
  }
}

如果您要自定义内容表,则在最前面进行操作会更容易。如果那不可能,我知道的最后一个选择是编写一个备注插件,用于自定义解析数据,然后将其附加到graphql节点