首页 > 解决方案 > AWS AppSync 获取另一个表的计数(例如计算帖子的点赞数)

问题描述

我有以下 AWS AppSync/Amplify 模型

type Event @model {
  id: ID!
  name: String!
  ticketsSold: Int!
  moneySum: Int!
}

ticketsSold属性必须反映orderswith的计数eventId = XmoneySum必须代表所有订单票价的总和eventId = X

有 2 个选项(或更多?)需要考虑:

  1. 对于每个putItem(createOrder 突变),event使用新的计数/总和更新正确的行
  2. eventId = X通过 AWS Lambda 解析器查询/扫描所有订单

每个选项都有一些优点和缺点。使用选项 1,如果多人同时订购(交易?),可能会出现不同步的情况。使用选项 2 的缺点是扫描非常昂贵且速度慢......

这些事件显示在 ReactJS 应用程序的主页上,ticketsSoldmoneySum显示为预览和详细信息,因此它将被“大量”获取。

建议?非常感谢!

标签: aws-lambdaaws-amplifyaws-appsync

解决方案


我会使用选项 1,使用您的票证数据库中的流进入一个 lambda,该 lambda 使用聚合信息更新某些表。这将比无休止的扫描更快、更干净。我使用它来汇总用户的 lambda 使用情况,将 lambda 运行时记录到可以立即查询总数的表中。效果很好。


推荐阅读