1

是否可以使用单个 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 试图同时获取一个项目,并且相同的项目分配给两个用户时,就会出现此问题。

所以首先 A 获取项目。在更新 Items 表以设置 ItemAssigned = YES 之前,B 还获取相同的项目。现在 A 和 B 的主屏幕都显示相同的项目。这是错误的。

唯一的方法是使用单个 API 扫描和更新 Items 表。是否有可能在 Amazon DynamoDB 中执行此操作?

谢谢。

4

1 回答 1

4

不幸的是,没有 API 可以在单个操作中进行扫描和更新。您可能需要查看有条件的 PUT 项目,因为这将允许您实现类似结帐的功能,以便您可以仅在“ItemAssigned = NO”时设置“ItemAssigned = YES”。

在处理扫描结果时,您的应用程序代码需要优雅地处理异常,但将允许您请求的工作流只允许一个用户查看该项目。

PUT 项目的 API 文档

于 2012-11-27T14:47:44.687 回答