在将用户提供的数据插入 DynamoDB GraphQL table 之前,您应该如何更改它?

How should you alter user-provided data before it's inserted in DynamoDB GraphQL table?

我正在使用 AWS Amplify/DynamoDB/AppSync 构建一个聊天应用程序,我希望能够审查聊天消息中的脏话。

我不想做这个客户端,因为用户可以解决这个问题。我不想在 Lambda 中处理它,因为我想使用 gql 订阅来实时传递聊天消息(即我想在它被插入数据库之前处理它)。

在 Mutation 请求解析器中处理这个问题的正确方法是什么?我现在有一个可以使用的版本,但似乎要绕着街区走很长一段路才能处理这个问题。如果我更改我的身份验证配置,我还必须记住更新我的解析器。

您需要一个修改聊天消息的突变,然后将它们插入到 DynamoDb。如果消息修改的逻辑简单,那么可以用DynamoDb resolver. Otherwise, you go with a direct-lambda resolver.

来实现mutation

您的 AppSync 订阅应该可以与直接 lambda 解析器一起正常工作。它可以从 lambda 接收任何你 return 的东西。例如:下面的订阅可以同时收到original/altered条消息内容。

type Mutation {
  sendMessage(input: MessageInput!): SendMessageResult
}

type Subscription: {
  onMessageReceived(receivedUserId: ID!): SendMessageResult
    @aws_subscribe(mutations: ["sendMessage"])
}

type SendMessageResult {
  messageId
  originalMessageContent
  alteredMessageContent
  receivedUserId
  sentUserId
  sentAt
}