在将用户提供的数据插入 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
}
我正在使用 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
}