如何解决Dynamodb ExpressionAttributeValues与对象列表
我有一个名为“用户”的Dynamodb表,其中包含基本的用户信息及其联系方式。数据结构如下:
{
"ContactList": [
{
"ContactNumber": "+123 123456789","ContactWayCode": "PHONE"
},{
"ContactNumber": "+123 123456789","ContactWayCode": "WHATSAPP"
}
],"Email": "abc@gmail.com","Id": "ff94beab-7d4c-4231-b948-84257596d33b","Name": "Tester","Password": "xxxxxxxx",}
我想通过updateItem函数更新姓名和联系人列表。 因此,我首先为联系人创建了一个属性值列表:
foreach (var contact in user.ContactList)
{
Dictionary<string,AttributeValue> contactAttributeValue = new Dictionary<string,AttributeValue>();
AttributeValue attribute = new AttributeValue();
attribute.S = contact.ContactWayCode;
contactAttributeValue.Add(nameof(contact.ContactWayCode),attribute);
attribute.S = contact.ContactNumber;
contactAttributeValue.Add(nameof(contact.ContactNumber),attribute);
attributeValueList.Add(attribute);
}
然后我将带有请求的属性值列表放入ExpressionAttributeValues部分:
var request = new UpdateItemRequest
{
.......
ExpressionAttributeValues = new Dictionary<string,AttributeValue>()
{
{ ":" + nameof(user.Name),new AttributeValue { S = StringHelper.sstr(user.Name) }},{ ":" + nameof(user.ContactList),new AttributeValue { L = attributeValueList }}
}
......
}
client.UpdateItem(request);
但是,当我调用UpdateItem(request)时,出现以下错误消息:
ExpressionAttributeValues包含无效值:已提供 AttributeValue设置了多个数据类型,必须完全包含 键支持的一种数据类型:ContactList“}
在dynamodb中更新对象列表的正确方法应该是什么? (如果不存在则追加,如果存在则更新)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。