Ваш синтаксис правильный, единственная проблема в том, что символы "é" и "á" не поддерживаются.Спецификация описывает правила именования операций, полей и т. Д. Поддерживаемый шаблон:
/[_A-Za-z][_0-9A-Za-z]*/
Кроме того:
Имена в GraphQL ограничены этимПодмножество возможных символов ASCII для поддержки взаимодействия с как можно большим количеством других систем.
Поэтому, к сожалению, вам придется преобразовать эти символы с акцентами в допустимые, чтобы ваша схема считалась действительной.
РЕДАКТИРОВАТЬ: Вы можете создать собственный скаляр.Вот функция, которая принимает имя, описание и массив и возвращает пользовательский скаляр:
const makeCustomEnumScalar = (name, description, validValues) => {
const checkValue = (value) => {
const coerced = String(value)
if (!validValues.includes(coerced)) {
throw new TypeError(`${coerced} is not a valid value for scalar ${name}`)
}
return coerced
}
return new GraphQLScalarType({
name,
description,
serialize: checkValue,
parseValue: checkValue,
parseLiteral: (ast) => checkValue(ast.value),
})
}
Теперь вы можете сделать что-то вроде:
const DayOfWeek = makeCustomEnumScalar('Day of Week', 'day of week enum', [
'lunes',
'martes',
'miércoles',
'jueves',
'viernes',
'sábado',
'domingo'
])
Добавить его в свои средства распознавания:
const resolvers = {
DayOfWeek,
// Query, Mutation, etc.
}
И ваши определения типов:
scalar DayOfWeek
И тогда вы можете использовать его как любой другой скаляр.Если в качестве ввода или вывода в запросе указано недопустимое значение, то GraphQL выдаст ошибку, как в enum.Единственное предостережение в том, что если вы вводите значения непосредственно в запрос (в отличие от использования переменных), вам все равно придется заключать их в двойные кавычки.