我有两个表格:帖子和用户
在createPost变异解析器中,我设置了一些默认值来执行某些属性(比如userId、createdAt时间戳、isDeleted标志等)。此外,我想增加用户的numPosts计数器。
这有可能通过标准解析器实现吗?
如果没有,有什么更好的选择,为什么?
替代1)当添加新的Post记录增加用户的numPosts计数器时,使用DynamoDB流并触发lambda函数。
替代方案2)使用lambda解析器并将所有逻辑移到那里,而不是标准解析器。
发布于 2018-05-29 17:18:32
可以使用BatchPut操作同时更新多个表。有关更多信息,请参阅亚马逊DynamoDB批处理操作指南。
您需要一个解析器,例如
{
"version" : "2018-05-29",
"operation" : "BatchGetItem",
"tables" : {
"Posts": {
...data
},
"NumPosts":{
...data
}
}
}发布于 2018-06-06 23:56:32
我走了“使用lambda解析器并将所有逻辑移到那里而不是标准解析器”的路线。为了我的应用程序。
您可以通过这种方式进行大量的控制,实心日志、度量,并且可以做任何您想做的事情,但是您必须支付lambda的费用。
如果其他更改可能发生在事实发生之后,那么查看流的选项可能会更有意义,而将数据处于介于两者之间的状态并不重要。
没有全面的背景,很难评估什么是最好的选择。
发布于 2018-05-28 20:03:35
有一些更新表达式可以用于DynamoDB;它显然是AppSync的用于DynamoDB的解析映射模板参考之一。通过代码中给出的示例代码,您可以按照以下方式操作一些UpdateItem代码:
{
"version" : "2017-02-28",
"operation" : "UpdateItem",
"key": {
"id" : { "S" : "${context.arguments.id}" }
},
"update" : {
"expression" : "ADD numPosts :incrCount",
"expressionValues" : {
":incrCount" : { "N" : 1 }
}
}
}编辑:--本文假设您的numPosts计数器作为字段保存在Users表中。
https://stackoverflow.com/questions/50537955
复制相似问题