我正在尝试使用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, ...]
答案 0 :(得分:0)
找到technologies: [ tech1, tech2, tech3 ]
是解决此问题的方法。实际的问题是我的降价文件中提供的数据不一致。