我的 dynamoDB 表中的每个对象看起来都像
{
_geoloc: {lat: 123, lng: 456},
name: 'abc',
city: 'belarus',
id: 'unique1'
}
Run Code Online (Sandbox Code Playgroud)
我有以下更新表达式:
const params = {
TableName: CONFIG.dynamoDB.tableName,
Key:{
"id": location.id.toString()
},
UpdateExpression: "set city=:c, _geoloc=:g",
ExpressionAttributeValues:{
":c": location.address.city,
":g": geoCodes
},
ReturnValues:"UPDATED_NEW"
};
Run Code Online (Sandbox Code Playgroud)
DynamoDB 引发以下错误:
ValidationException: Invalid UpdateExpression: Syntax error; token: "_", near: ", _geoloc"
at Request.extractError (/Users/mv/pcode/meeting-finder-kinesis-consumer/node_modules/aws-sdk/lib/protocol/json.js:48:27)
Run Code Online (Sandbox Code Playgroud)
据我所知.. _ 是名称中的有效字符
有什么建议我可以解决这个问题吗?
同意,属性名称可以包含下划线。但是,在这种情况下,您需要在更新表达式中为属性名称定义占位符,并使用表达式属性名称来定义占位符的实际属性名称(因为它包含特殊字符)。
"ExpressionAttributeNames" : "#geoloc = _geoloc"
Run Code Online (Sandbox Code Playgroud)
另外,只需将更新表达式中的 _geoloc 替换为 #geoloc 即可。
这应该可以解决问题。
| 归档时间: |
|
| 查看次数: |
4504 次 |
| 最近记录: |