Emp*_*ack 1 iphone objective-c amazon-web-services ios amazon-dynamodb
是否可以选择使用单个 API 扫描和更新 DynamoDB 表中的记录。假设我在 Items 表中有一个项目列表,其中包含字段(ItemID、ItemName、ItemAssigned)。ItemID是表的Hash键。项目 ID 的命名类似于 Item1、Item2、Item3 等,用户将不知道表中的项目是什么。因此,在应用程序中,如果用户点击“获取项目”按钮,则会获取随机项目并将其分配给他。然后 ItemAssigned 设置为 YES。项目选项卡 那么该项目将不会分配给任何其他用户。这就是发生的事情。
步骤:
1. 点击“获取项目”
2. 扫描项目表中的第一个项目,其中 ItemAssigned = NO
3. 在主屏幕中显示该项目
4. 更新项目表中的项目以设置 ItemAssigned = YES
如果一个用户一次尝试获取该项目,这种方法效果很好。当两个用户 A 和 B 尝试同时获取一个项目,并且相同的项目被分配给这两个用户时,就会出现问题。
所以首先 A 获取该项目。在更新 Items 表以设置 ItemAssigned = YES 之前,B 也会获取相同的项目。现在 A 和 B 的主屏幕都显示相同的项目。这是错误的。
唯一的方法是使用单个 API 扫描和更新项目表。在 Amazon DynamoDB 中是否有可能做到这一点?
谢谢。
不幸的是,没有 API 可以在单个操作中进行扫描和更新。您可能想要研究条件 PUT 项目,因为这将允许您实现类似结账的功能,这样您只能在“ItemAssigned = NO”时设置“ItemAssigned = YES”。
您的应用程序代码在处理扫描结果时需要妥善处理异常,但将允许您请求的工作流程仅允许一个用户查看该项目。
| 归档时间: |
|
| 查看次数: |
1662 次 |
| 最近记录: |