Graphql-ruby как определить хеш как тип

Есть ли возможность определить поле Hash as Type в схеме graphql-ruby? В моей структуре данных есть многоязычный тип String, который состоит из кода языка в качестве ключа и соответствующего текста. На данный момент доступно 2 языка, например:

{ 
  "en" : "hello",
  "de" : "hallo"
}

Так что достаточно построить такой тип:

 class Types::LanguageStringType < GraphQL::Schema::Object
   field :de, String, null:true
   field :en, String, null:true
 end

Как выглядит тип, который предоставляет преобразование строки в строку? Соответствующий интерфейс машинописного текста выглядит, например, так:

title: {
  [language: string]: string;
}

Чтобы сделать шаг вперед, как рекурсивный узел:

export interface NodeDescription {
  name: string
  children?: {
      [childrenCategory: string]: NodeDescription[];
  }
}

Есть ли способ использовать это в поле как Types::NodeDescriptionType в схеме graphql-ruby?

1 ответ

Не существует такого понятия, как универсальный тип объекта. И нет встроенного типа String -> String Hash. Ваш GraphQL API построен на конкретном графе объектов, который необходимо определить заранее. Если все, что вам нужно, это String -> String Hash, вы можете определить свой собственный скаляр или, если этого достаточно, вы можете использовать встроенный скаляр JSON, который поставляется с graphql-ruby:

Источник: https://graphql-ruby.org/type_definitions/scalars.html

Другие вопросы по тегам