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:如果参数类型为字符串则跳过参数

GraphQL - Gatsby.js- React 组件。 - 如何查询变量/参数?

Gatsby Contentful - GraphQL 查询错误:未知类型“ContentfulFixed”

Gatsby:在自定义帖子类型上使用 GraphQL 查询和自定义分类

未捕获的类型错误:无法使用 Gatsby 和 graphQl 读取未定义的属性“数据”

Gatsby Contentful-GraphQL查询错误:未知类型“ ContentfulFixed”