是否可以选择扫描&使用单个API更新DynamoDB表中的记录。考虑我在Items表中有项目列表,包含字段(ItemID,ItemName,ItemAssigned)。 ItemID是表的哈希键。项目ID被命名为,Item1,Item2,Item3等。用户将不知道表中的项目是什么。因此,在应用程序中,如果用户点击“获取项目”按钮,则将获取随机项并将其分配给他。然后将ItemAssigned设置为YES。项目标签然后该项目将不会分配给任何其他用户。这就是发生的事情。
步骤:
1.点击“获取项目”
2.扫描Items表中的第一项,其中ItemAssigned = NO
3.在主屏幕中显示项目
4.更新Items表中的项目以设置ItemAssigned = YES
如果一个用户一次尝试获取该项,则此方法很有效。当两个用户A& B正在尝试同时获取项目,并且同一项目被分配给两个用户。
所以首先取一个项目。在更新Items表以设置ItemAssigned = YES之前,B也会提取相同的项目。现在A& B的主屏幕显示相同的项目。这是错误的。
唯一的方法是Scan&使用单个API更新Items表。是否有可能在Amazon DynamoDB中执行此操作?
感谢。
答案 0 :(得分:4)
不幸的是,没有API可以在单个操作中进行扫描和更新。您可能希望查看条件PUT项目,因为这将允许您实现 checkout 之类的功能,这样您只有在“ItemAssigned = NO时才能设置”ItemAssigned = YES“ ”。
您的应用程序代码需要在处理扫描结果时优雅地处理异常,但允许您请求的工作流程只允许一个用户查看该项目。