首页 > 解决方案 > Gatsby graphql 跳过类型注释

问题描述

我正在使用自定义 YAML 类型来处理从 Markdown frontmatter 读取的字符串。这种类型根据输入生成一个对象数组,并且不可能知道结果数据的确切形状。

这意味着,在编译时生成的 graphql 模式无法推断类型,并引发错误。有没有办法禁用frontmatter中特定字段的类型注释?

索引.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)]
}

我读了这个,但这似乎需要我基于一个没有真正扩展的整个文档创建一个新类型。

标签: graphqlgatsby

解决方案


GraphQL 不支持动态模式,因此该字段需要在所有实例中匹配。您可以为 GraphQL 查询生成唯一类型和联合,但这似乎是多余的。相反,您可能希望将数据视为字符串并JSON.parse()在组件中使用以将其转换为可用状态。


推荐阅读