如何判断项是否是在DynamoDB的PutItem中创建的?

时间:2016-03-09 21:43:28

标签: c# amazon-dynamodb

我正在评估DynamoDB是否是我的问题的一个很好的解决方案,以及我在做#34; upsert"时的一个要求。类型操作是我需要知道项目是创建还是刚更新。

我正在使用AWSSDK for .NET,并注意到随着响应返回的HttpStatusCode总是200 OK,无论该项是创建还是更新。有没有办法确定该项目以前是否存在于同一个呼叫中?

var response = await Client.PutItemAsync(request);

在Azure DocumentDB中,我可以使用Upsert完成此任务:

var response = await Client.UpsertDocumentAsync(selfLink, item);
if (response.StatusCode == HttpStatusCode.Created)
{
    // Do something
}

DynamoDB是否有等价物?

1 个答案:

答案 0 :(得分:0)

您可以设置request.ReturnValues = ReturnValue.ALL_OLD

这将告诉DynamoDB发送"旧文档"在回应中。

显然,如果没有"旧文件" (因为操作正在创建一个新的),那么你将获得一个空字典:

var response = await Client.PutItemAsync(request);
if(response.Attributes != null && response.Attributes.Count > 0)
{
     // It was an update
}
else
{
     // It was an insert
}