Я хочу создать тип graphql, который может возвращать либо Array of Integers, либо String.
Я уже пробовал использовать объединение в форме
union CustomVal = [Int] | String, но возвращает ошибку.
Объявление схемы:
union CustomValues = [Int] | String
type Data {
name: String
slug: String
selected: Boolean
values: CustomValues
}
Ошибка:
node_modules/graphql/error/syntaxError.js:24
return new _GraphQLError.GraphQLError('Syntax Error: ' + description, undefined, source, [position]);
Syntax Error: Expected Name, found [
GraphQL request (81:23)
80:
81: union CustomValues = [Int] | String
Можно ли это сделать в graphql? Если нет, не могли бы вы предложить альтернативу для этого?
Я спрашиваю об этом, поскольку в документации союза говорится, что Note that members of a union type need to be concrete object types; you can't create a union type out of interfaces or other unions.
Любые решения были бы очень полезны.
По-прежнему выдает ошибку, и я хочу, чтобы тип принимал либо Array of Integers, либо String, а тип массива не объявлен в graphql с использованием []? Ошибка Union type CustomValues can only include Object types, it cannot include Int. Union type CustomValues can only include Object types, it cannot include String.
Вам нужно использовать [], если вам нужен список (массив), но если вы хотите возвращать разные типы на разных входах, вам нужно будет определить, как это сделать, в вашей функции преобразователя.


Следуйте этому https://github.com/facebook/graphql/issues/215, Graphql в настоящее время не поддерживает типы объединения масштабирования, вы можете сделать это
union IntOrString = IntBox | StringBox
type IntBox {
value: Int
}
type StringBox {
value: String
}
или вы можете иметь свой собственный тип, см. этот graphql, объединение скалярного типа?
Можете попробовать удалить
[]из[Int]?