![](/img/trans.png)
[英]How to read an item from dynamodb in an async function (aws lambda)?
[英]AWS Lambda: How to update item in a map in Dynamodb
我想在 lambda function 中聚合期间在我的 Dynamodb 表中增加名为ProvinceDistribution的MAP属性中的项目的值,基于用户的字段记录。
表 model:
type submissionsAggregate @model {
id: String
totalRecords: Int
provinceDistribution: provinces
status: employmentStatus
females: Int
males: Int
}
type provinces {
Sichuan: Int
Qinghai: Int
Gansu: Int
Heilongjiang: Int
Yunnan: Int
Hunan: Int
Shaanxi: Int
Hebei: Int
...
}
用户记录:
{
"Timestamp": {
"S": "2016-11-18:12:09:36"
},
"province": {
"S": "Sichuan"
},
"gender": {
"S": "male"
},
"employmentStatus": {
"S": "employed"
}
}
我提取了省字段值并将其存储在ExpressionAttributeValues中,希望在更新期间创建指向 MAP( #province )中目标项目的路径,如下所示
const params = {
ExpressionAttributeNames: {
"#total": "totalRecords",
// "#status": "status",
"#males": "males",
"#females": "females",
"#select": "Sichuan",
"#province": "provinceDistribution",
},
ExpressionAttributeValues: {
":inc": 1,
// ":targetStatus": `#status.${employmentStatus}`,
":targetProvince": `#province.${province}`,
":maleIncrement": maleIncrement,
":femaleIncrement": femaleIncrement,
},
Key: {
id: "statistics1",
},
ReturnValues: "ALL_NEW",
TableName: process.env.TABLE_NAME,
UpdateExpression:
"set #province=:targetProvince + :inc, #total=#total+ :inc, #males =#males+:maleIncrement, #females=#females+ :femaleIncrement",
};
然后我得到这个错误:
'无效的UpdateExpression:运算符或function的操作数类型不正确; 运算符或 function:+,操作数类型:S',
主要问题是知道如何动态遍历 Map。 说省分布.四川,其中“四川”是从用户记录中提取的省份,以便在 Map 中增加其值。
任何有关如何实现这一目标的建议将不胜感激。
您的问题set #province=:targetProvince +:inc
。 您正在尝试将数字与字符串连接,UpdateExpressions https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html不支持该字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.