Gatsby graphql 跳过类型注释
Posted
技术标签:
【中文标题】Gatsby graphql 跳过类型注释【英文标题】:Gatsby graphql skipping type annotation 【发布时间】:2020-01-18 17:45:02 【问题描述】:我正在使用自定义 YAML 类型来处理从 Markdown frontmatter 读取的字符串。这种类型根据输入生成一个对象数组,并且不可能知道结果数据的确切形状。
这意味着,在编译时生成的 graphql schema 无法推断类型,并抛出错误。有没有办法禁用 frontmatter 中特定字段的类型注释?
index.md
---
foo: !customType "[Foo][Bar]"
bar: !customType "[[a][b]][c]"
---
然后,我想查询它:
query IndexQuery
foo // Should give me [Object(Foo), Object(Bar)]
bar // Should give me [[Object(a), Object(b)], Object(c)]
我阅读了this,但这似乎需要我基于整个文档创建一个新类型,而该类型并不能真正扩展。
【问题讨论】:
【参考方案1】:GraphQL 不支持动态模式,因此该字段需要在所有实例中匹配。您可以为 GraphQL 查询生成唯一类型和联合,但这似乎是多余的。相反,您可能希望将数据视为字符串并在组件中使用 JSON.parse()
将其转换为可用状态。
【讨论】:
谢谢,我也意识到我可以简单地将数据字符串化,然后解析回来!以上是关于Gatsby graphql 跳过类型注释的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL - Gatsby.js- React 组件。 - 如何查询变量/参数?
Gatsby Contentful - GraphQL 查询错误:未知类型“ContentfulFixed”
Gatsby:在自定义帖子类型上使用 GraphQL 查询和自定义分类