Graphql-ruby 如何将哈希定义为类型

Yan*_*der 2 ruby ruby-on-rails graphql graphql-ruby graphql-schema

是否有可能在 graphql-ruby 模式中将 Hash 定义为 Type 字段?在我的数据结构中有一个多语言字符串类型,它由作为键的语言代码和相应的文本组成。目前提供了 2 种语言,例如:

{ 
  "en" : "hello",
  "de" : "hallo"
}
Run Code Online (Sandbox Code Playgroud)

所以构建这样的类型就足够了:

{ 
  "en" : "hello",
  "de" : "hallo"
}
Run Code Online (Sandbox Code Playgroud)

提供字符串到字符串映射的类型如何?例如,相应的打字稿界面如下所示:

title: {
  [language: string]: string;
}
Run Code Online (Sandbox Code Playgroud)

更进一步,就像一个递归节点:

export interface NodeDescription {
  name: string
  children?: {
      [childrenCategory: string]: NodeDescription[];
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个字段中使用它作为 graphql-ruby 模式中的 Types::NodeDescriptionType ?

Ste*_*sby 5

没有通用对象类型这样的东西。并且没有内置的 String -> String Hash 类型。您的 GraphQL API 建立在您必须提前定义的特定对象图上。如果您想要的只是字符串 -> 字符串哈希,那么您可以定义自己的标量,或者如果足够,您可以使用 graphql-ruby 附带的内置 JSON 标量:

来源:https : //graphql-ruby.org/type_definitions/scalars.html