Iphone Amazon Dynamo DB-扫描和更新表记录-iOS SDK

Iphone Amazon Dynamo DB-扫描和更新表记录-iOS SDK,iphone,objective-c,ios,amazon-web-services,amazon-dynamodb,Iphone,Objective C,Ios,Amazon Web Services,Amazon Dynamodb,是否有使用单个API扫描和更新DynamoDB表中记录的选项。考虑一下,我有一个项目表中的项目列表,其中包含字段ItID、ItMeNeNT、ItMeAdvices。ItemID是表的哈希键。条目ID的名称为Item1、Item2、Item3等,用户将不知道表中的条目是什么。因此,在应用程序中,如果用户点击“获取项目”按钮,那么将获取一个随机项目并分配给他。然后将ItemAssigned设置为YES。“项目”选项卡将不会将该项目分配给任何其他用户。事情就是这样 步骤: 1.我得到一件物品 2.扫描

是否有使用单个API扫描和更新DynamoDB表中记录的选项。考虑一下,我有一个项目表中的项目列表,其中包含字段ItID、ItMeNeNT、ItMeAdvices。ItemID是表的哈希键。条目ID的名称为Item1、Item2、Item3等,用户将不知道表中的条目是什么。因此,在应用程序中,如果用户点击“获取项目”按钮,那么将获取一个随机项目并分配给他。然后将ItemAssigned设置为YES。“项目”选项卡将不会将该项目分配给任何其他用户。事情就是这样

步骤: 1.我得到一件物品 2.扫描Items表中的第一个项目,其中ItemAssigned=NO 3.在主屏幕中显示项目 4.更新Items表中的项目,将ItemAssigned设置为YES

如果一次只有一个用户试图获取该项目,那么这种方法非常有效。当两个用户A和B同时尝试获取一个项目,并且将同一项目分配给两个用户时,就会出现问题

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

唯一的方法是使用单个API扫描和更新Items表。在Amazon DynamoDB中是否有这样做的可能性


谢谢。

不幸的是,没有API可以在一次操作中进行扫描和更新。您可能希望查看条件PUT item,因为这将允许您实现类似签出的功能,以便只有在itemsigned=NO时才能设置itemsigned=YES

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


不幸的是,没有API可以在一次操作中扫描和更新。您可能希望查看条件PUT item,因为这将允许您实现类似签出的功能,以便只有在itemsigned=NO时才能设置itemsigned=YES

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


谢谢你的回答。这里的问题是扫描和更新之间的延迟。在中间间隙中,其他一些用户也会扫描相同的项目。我觉得DynamoDB根本不适合这种应用。我说的对吗?@EmptyStack是的,在一段时间内,多个用户可以从扫描中看到相同的项目,但使用条件更新和一些附加逻辑,您可以确保只有一个用户真正看到了这些项目。谢谢。我明白你的意思。但这里的问题是,在第一个用户更新项目之前,第二个用户有更多的机会获取项目。@EmptyStack是的,但如果目的是当项目显示给用户时,它们会被更新,您可以扫描、执行和条件更新,如果成功,则显示给用户。如果条件更新失败,您将忽略该项。谢谢您的回答。这里的问题是扫描和更新之间的延迟。在中间间隙中,其他一些用户也会扫描相同的项目。我觉得DynamoDB根本不适合这种应用。我说的对吗?@EmptyStack是的,在一段时间内,多个用户可以从扫描中看到相同的项目,但使用条件更新和一些附加逻辑,您可以确保只有一个用户真正看到了这些项目。谢谢。我明白你的意思。但这里的问题是,在第一个用户更新项目之前,第二个用户有更多的机会获取项目。@EmptyStack是的,但如果目的是当项目显示给用户时,它们会被更新,您可以扫描、执行和条件更新,如果成功,则显示给用户。如果条件更新失败,则忽略该项。