【发布时间】:2020-06-13 20:33:25
【问题描述】:
我正在尝试追加到 DynamoDB 表中的字符串集(字符串数组)列,该列可能已经存在也可能不存在。在编写我的 UpdateExpression 时,我提到了诸如 this 和 this 这样的问题。
我的代码如下所示。
const AWS = require('aws-sdk')
const dynamo = new AWS.DynamoDB.DocumentClient()
const updateParams = {
// The table definitely exists.
TableName: process.env.DYNAMO_TABLE_NAME,
Key: {
email: user.email
},
// The column may or may not exist, which is why I am combining list_append with if_not_exists.
UpdateExpression: 'SET #column = list_append(if_not_exists(#column, :empty_list), :vals)',
ExpressionAttributeNames: {
'#column': 'items'
},
ExpressionAttributeValues: {
':vals': ['test', 'test2'],
':empty_list': []
},
ReturnValues: 'UPDATED_NEW'
}
dynamo.update(updateParams).promise().catch((error) => {
console.log(`Error: ${error}`)
})
但是,我收到此错误:ValidationException: An operand in the update expression has an incorrect data type。我在这里做错了什么?
[更新]
感谢 Nadav Har'El 的回答,我能够通过修改参数以使用 ADD 操作而不是 SET 来使其工作。
const updateParams = {
TableName: process.env.DYNAMO_TABLE_NAME,
Key: {
email: user.email
},
UpdateExpression: 'ADD items :vals',
ExpressionAttributeValues: {
':vals': dynamo.createSet(['test', 'test2'])
}
}
【问题讨论】:
标签: amazon-dynamodb aws-sdk-js aws-sdk-nodejs