如何解决AWS Lambda:如何在Dynamodb中更新地图中的项目
我想根据用户的 province 字段在lambda函数中进行聚合时增加Dynamodb表中名为 provinceDistribution 的MAP属性中项的值。记录。
表模型:
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"
}
}
我提取了 province 字段值,并将其存储在 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:运算符或函数的操作数类型错误;运算符或函数:+,操作数类型:S',
主要问题是知道如何动态遍历地图。假设provinceDistribution.Sichuan,其中“ Sichuan”是从用户记录中提取的省,目的是增加其在Map中的值。
任何有关如何实现这一目标的建议将不胜感激。
解决方法
您的问题是set #province=:targetProvince + :inc
。您正在尝试将数字与字符串连接,UpdateExpressions https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。