如何在没有for循环的情况下从DynamoDB中删除所有数据?

时间:2018-01-13 07:14:07

标签: ios swift amazon-dynamodb aws-sdk

假设我在DynamoDB中有100个数据然后删除我必须执行循环的所有数据。那么有没有办法在没有for循环的情况下删除所有数据?

let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()

for var key in 0 ..<100 {

    let itemToDelete: CategoriesDB = CategoriesDB()
    itemToDelete._index = key

    dynamoDbObjectMapper.remove(itemToDelete, completionHandler:              
    {(error: Error?) -> Void in
        if let error = error {
            print(" Amazon DynamoDB Save Error: \(error)")
            return
        }
        print("A Category was deleted.")
    })
}

2 个答案:

答案 0 :(得分:2)

如果要删除DynamoDB表中的所有数据,最好只删除表并再次创建,因为这不会花费写入容量单位。

答案 1 :(得分:0)

暂时忽略swift SDK,DynamoDB使用DeleteItem方法从表中删除单个项目,但它也有一个批处理方法。

Quote

  

除了DeleteItem,Amazon DynamoDB还支持BatchWriteItem   同时删除多个项目的操作。

问题是,我看不到通过BatchWriteItem访问swift SDK的方法。即使您可以使用BatchWriteItem,它一次只能处理25个项目,因此您仍然需要编写循环。

对不起它不是一个更完整的答案,但认为这可能有用。据我所知,没有一种简单的(单一)方法可以做到这一点。