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