如何在降价促销中创建字符串列表?

时间:2019-06-13 12:19:20

标签: reactjs graphql yaml gatsby graphql-js

我正在尝试使用gatsbyjs和graphql从markdown frontmatter检索列表形式的数据。鉴于markdown文件中的列表,目标是将列表项提取到我的react组件中以供进一步使用。

这是我的工作,我想使用GatsbyJS和React创建一个网站(这就是为什么我不能共享真实代码)。 到目前为止,我已经尝试过通过GraphQL从frontmatter提取数据,但是该字段未定义或仅包含null值。

我有这样一个重要问题:

---
name: "someName"
expertise: "someExpertise"
...
technologies: 
- tech1
- tech2
- tech3
---

在我的js代码中,我尝试使用graphql来获取数据,如下所示:

query($slug: String!) {
    profile: markdownRemark(fields: { slug: { eq: $slug } }) {
      html
      frontmatter {
        date(formatString: "DD MMMM, YYYY")
        author
        expertise
        name
        dev_type
        degree 
        technologies
      }
    }
}

我希望输出匹配这样的形式:

technologies = ["tech1", "tech2", "tech3"]

但是尝试在开发环境中编译和运行网站时出现以下错误:

案例1。

Errors:
  Int cannot represent non-integer value: "tech1"

我不知道如何解决此问题。以我的理解,这应该有效。已经尝试在NodeField中创建名为technologies的新gatsby-node.js,但这也行不通。

我还根据这个前沿问题考虑了另一件事,根据我的理解,前沿是YAML,或者Markdown文件中所需的技术列表是YAML列表,不是吗?
在这种情况下,我应该调整/扩展gatsby-transformer-yaml中的gatsby-config.js插件,但是我不知道如何以正确/正确的方式实现这一目标。

案例2。

不幸的是,我无法再生成查询,但是找到了一种不会出现类型错误的方法,但是technologies只包含了null值(具有相同的内容)。

technologies = [ null, null, null, ...]

1 个答案:

答案 0 :(得分:0)

找到technologies: [ tech1, tech2, tech3 ]是解决此问题的方法。实际的问题是我的降价文件中提供的数据不一致。