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



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

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

在突变请求解析器中处理此问题的正确方法是?我现在有一个版本,但要处理这个似乎需要很长一段路。如果我更改了我的授权配置,我还必须记住更新我的解析器。

需要修改聊天消息,然后将它们插入DynamoDb。如果消息修改的逻辑很简单,那么您可以使用DynamoDb解析器实现突变。否则,您可以使用直接lambda解析器。

你的AppSync订阅使用直接lambda解析器应该可以正常工作。它可以接收从lambda返回的任何值。例如:下面的订阅可以接收原始/修改后的消息内容。

type Mutation {
sendMessage(input: MessageInput!): SendMessageResult
}
type Subscription: {
onMessageReceived(receivedUserId: ID!): SendMessageResult
@aws_subscribe(mutations: ["sendMessage"])
}
type SendMessageResult {
messageId
originalMessageContent
alteredMessageContent
receivedUserId
sentUserId
sentAt
}

最新更新