首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AWS低级API将空AttributeValue传递给DynamoDb

使用AWS低级API将空AttributeValue传递给DynamoDb
EN

Stack Overflow用户
提问于 2016-02-03 15:17:27
回答 1查看 3.7K关注 0票数 1

我试图使用DynamoDB低级别API作为文档化的这里来更新C#表中的项。

以下是我努力实现这一目标的努力:

代码语言:javascript
复制
var response = DynamoClientProvider.Current.UpdateItem(new UpdateItemRequest
{
    TableName = "MyTable",
    Key = {{"TableId", new AttributeValue {S = "12345"}}},
    ExpressionAttributeNames =
    {
        {"#T","Timestamp"},
        {"#D","Data"}
        {"#K","MyKey"}
    },
    ExpressionAttributeValues =
    {
        {":Timestamp", new AttributeValue("2016-2-3 00:00:00.000")},
        {":Data", new AttributeValue("some data")}
        {":MyKey", new AttributeValue("some other data")}
    },
    UpdateExpression = "SET #D = :Data, #T = :Timestamp, #K = :MyKey",
    ConditionExpression = "attribute_not_exists (Data)",
    ReturnValues = ReturnValue.ALL_OLD
});

这段代码工作得很好,但是当MyKey是空字符串时会出现问题。当这个值为空时,我会得到以下错误:

Amazon.DynamoDBv2.AmazonDynamoDBException: ExpressionAttributeValues包含无效值:提供的AttributeValue为空,必须包含密钥的支持数据类型之一:MyKey

因此,我尝试传递一个空AttributeValue,以便在本例中删除该属性,方法是将其设置为:

代码语言:javascript
复制
new AttributeValue{NULL = true}

但是,这将相反地将值设置为True的字符串文本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-03 23:05:41

我不确定DynamoDB的类型是否为空。

如果您需要删除属性,请使用'SET #D = :Data,#T =:time戳--删除#K‘

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35180855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档