Проверка ввода с помощью AWS AppSync

Можно ли выполнить проверку ввода с помощью AWS AppSync без добавления еще одного «уровня» взаимодействия?

Я чувствую, что добавление лямбда-функции лишит ее цели.

Я хотел бы выполнить хотя бы некоторую проверку регулярного выражения для строк.

А если нет, то как это делают люди, использующие AppSync или аналогичные решения (firebase)?


person Samuel E.    schedule 20.11.2018    source источник


Ответы (1)


Если это только проверка регулярного выражения без необходимости проверять ввод на соответствие данным в источнике данных, то вы можете добавить некоторую логику проверки в шаблон сопоставления запроса преобразователя.

См. Ниже пример проверки соответствия поля ввода электронному письму от myvaliddomain.com. Если это не подтвердится, мы просто прервем и выдадим ошибку в поле.

#set($valid = $util.matches("^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?(myvaliddomain)\.com", $ctx.args.input))
#if (!$valid)
    $util.error("$ctx.args.input is not a valid email.", "ValidationError")
#end

## Rest of your request mapping template below
person Tinou    schedule 20.11.2018
comment
Спасибо, это то, что я искал. Еще один вопрос, если вы не возражаете: поскольку первый аргумент $util.matches - это строка, можно ли получить этот шаблон Regex из самой базы данных? - person Samuel E.; 20.11.2018
comment
Поскольку теперь вам нужно подключить несколько источников данных к одному полю GraphQL, вы можете использовать конвейерный преобразователь. Ваш преобразователь конвейера будет состоять из двух функций: первая функция будет извлекать шаблон регулярного выражения из, скажем, DynamoDB с помощью операции GetItem и выполнять проверку внутри шаблона сопоставления ответов, а вторая функция фактически запускает другую операцию, только если первая функция завершается успешно. . Ознакомьтесь с docs.aws.amazon.com/appsync/latest/ devguide / для полного объяснения. - person Tinou; 21.11.2018
comment
@SamuelE. Попробуйте использовать шаблон оболочки, как описано в этой статье: hackernoon.com/. Это сэкономит вам много избыточности в вашем коде. - person Jose A; 13.11.2019