【问题标题】:How does GatsbyJS infer GraphQL datatypes?GatsbyJS 如何推断 GraphQL 数据类型?
【发布时间】:2019-06-22 03:02:34
【问题描述】:

GraphQL Error Field "tags" must not have a selection since type "[String]" has no subfields.

我正在开发 GatsbyJS 存储库。根据docs,GatsbyJS 会自动从我的 markdown 文件中推断出模式,这些文件隐式地使用诸如tags: ["sayings", "wisdom"] 之类的行来定义类型。当然,GatsbyJS 应该将类型推断为数组、列表或类似的东西。为什么 GatsbyJS 将类型推断为 String?

【问题讨论】:

    标签: graphql gatsby


    【解决方案1】:

    当您的开发服务器正在运行时,您可以通过http://localhost:8000/___graphql 访问它的 GraphiQL 界面。 GraphiQL 是一个 IDE,它不仅可以让您针对 GraphQL 服务器编写和运行查询,还可以提供一种查看架构的方法,包括每个可用字段的类型。请参阅the docs 了解更多信息。它包括语法突出显示,因此我强烈推荐在编写查询时使用它。

    您看到的错误表明字段tags 的类型为[String]。此处的括号表示String 类型的List(或数组)。 StringIntFloatBooleanID 都是内置的标量类型。具有标量类型(或枚举)的字段被视为“前导节点”,因此,它们本身不能具有字段选择。换句话说,

    tags {}
    

    不是有效的语法。它必须只是

    tags
    

    这就是您看到上述错误的原因。正如它所说,[String] 类型没有子字段。如果假设tags 字段返回的类型是对象类型,或者是一个对象类型的列表,那么您必须指定要返回的字段。

    您可能会发现更详细地查看 GraphQL 概念会有所帮助。 This tutorial 将是一个很好的起点,而且总是有 specification itself

    【讨论】:

    • 啊!我将数组的元素混淆为子字段,当然它们不是。谢谢!
    猜你喜欢
    • 2019-10-07
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多