在 AppSync DynamoDB 解析器中验证用户输入

Validate user input in AppSync DynamoDB Resolvers

我有 AWS AppSync API 和 DynamoDb,我可以使用 DynamoDb Resolvers 从中创建和获取数据。 (VTL 模板)

我不确定如何使用 VTL 模板进行用户输入验证。我想确保联系人的“名字”长度在 2 - 30 个字符之间。

如何使用 VTL 实现此目的?有没有办法在 GraphQL 模式本身中进行这种验证?

这是我的 GraphQL 模式,

schema {
   query: Query
   mutation: Mutation
}

type Mutation {
   createContact(contact: ContactInput!): Contact! 
}

type Contact {
    contactId: ID!
    firstName: String!
    lastName: String!
    email: String!
}

input ContactInput {
    firstName: String!
    lastName: String!
    email: String!
}

我找不到在 GraphQL 中执行此操作的好方法,但您可以使用 $util.validate$util.error 在 VTL 中轻松执行此操作(请参阅 the AWS documentation)。它们都具有将项目添加到 errors 数组的相同结果。

这是 $util.validate 的演示: https://mappingtool.dev/app/appsync/bee55bd607e2166091451e7a7959318e

这是 $util.error 的演示: https://mappingtool.dev/app/appsync/006d6c05e8bb7257c6cebce34494994c