如何添加新的属性映射在DynamoDB?



我的数据库结构

{
"email":"example@mail.com",
"products": {
"product1":{
"price":"$10",
"details":"detail"
},
"product2":{
"price":"$20",
"details":"detail"
}
}
}

我想给"产品"添加新属性映射和预期输出如下,

{
"email":"example@mail.com",
"products": {
"product1":{
"price":"$10",
"details":"detail"
},
"product2":{
"price":"$20",
"details":"detail"
},
"product3":{
"price":"$10",
"details":"detail"
}
}
}

我正在使用API网关和UpdateItem动作。这是我的映射模板,

{
"TableName": "tableName",
"Key": {
"email": {
"S": "$input.path('$.email')"
}
},
"UpdateExpression": "SET #pr = :vals",
"ExpressionAttributeNames": {
"#pr": "products"
},
"ExpressionAttributeValues": {
":vals": {
"M": {
"$input.path('$.productId')": {
"M": {
"price": {
"N": "$input.path('$.price')"
},
"details": {
"S": "$input.path('$.details')"
}
}
}
}
}
},
"ReturnValues": "NONE"
}

使用上面的模板将替换我所有的属性。实际产出,

{
"email":"example@mail.com",
"products": {
"product3":{
"price":"$10",
"details":"detail"
}
}
}

如何添加新属性到映射而不是替换它?

谢谢。

在您的请求中,您正在SET整个产品映射,但您只想添加一个嵌套映射。

{
"TableName": "tableName",
"Key": {
"email": {
"S": "$input.path('$.email')"
}
},
"UpdateExpression": "SET #pr.product3 = :vals",
"ExpressionAttributeNames": {
"#pr": "products"
},
"ExpressionAttributeValues": {
":vals": {
"M": {
"$input.path('$.productId')": {
"M": {
"price": {
"N": "$input.path('$.price')"
},
"details": {
"S": "$input.path('$.details')"
}
}
}
}
}
},
"ReturnValues": "NONE"
}

相关内容

  • 没有找到相关文章

最新更新