我正在评估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是否有等价物?
答案 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
}