如何在更新时从 DynamoDB 中删除多个属性
How to remove multiple attributes from DynamoDB on update
我想从 DynamoDB 中的一个项目中删除两个属性 table。在文档和互联网上的任何地方,它都显示只删除一个属性。是否可以一次从 DynamoDB table 中的项目中删除多个属性。如果是这样,如何?下面是我试过的代码:
const params = {
TableName: process.env.REPORTS_TABLE,
Key: {
ReportId: removeParams.reportId
},
UpdateExpression: 'REMOVE #param1, #param2',
ExpressionAttributeValues: { '#param1': 'StartDate', '#param2': 'EndDate' },
ReturnValues: 'UPDATED_NEW'
};
const res = await updateReport(params);
我收到以下错误:
ValidationException: ExpressionAttributeValues contains invalid key: Syntax error; key: "#param2"
这是 AWS 的限制还是有其他方法可以做到这一点?
documentation 显示多个属性被删除...
错误消息指的是这一行...
ExpressionAttributeValues: { '#param1': 'StartDate', '#param2': 'EndDate' },
ExpressionAttributeValues
不需要简单地删除属性...
尝试:
const params = {
TableName: process.env.REPORTS_TABLE,
Key: {
ReportId: removeParams.reportId
},
UpdateExpression: 'REMOVE #param1, #param2',
ReturnValues: 'UPDATED_NEW'
};
const res = await updateReport(params);
我认为问题在于您需要传入 ExpressionAttributeNames
,而不是 ExpressionAttributeValues
。
我想从 DynamoDB 中的一个项目中删除两个属性 table。在文档和互联网上的任何地方,它都显示只删除一个属性。是否可以一次从 DynamoDB table 中的项目中删除多个属性。如果是这样,如何?下面是我试过的代码:
const params = {
TableName: process.env.REPORTS_TABLE,
Key: {
ReportId: removeParams.reportId
},
UpdateExpression: 'REMOVE #param1, #param2',
ExpressionAttributeValues: { '#param1': 'StartDate', '#param2': 'EndDate' },
ReturnValues: 'UPDATED_NEW'
};
const res = await updateReport(params);
我收到以下错误:
ValidationException: ExpressionAttributeValues contains invalid key: Syntax error; key: "#param2"
这是 AWS 的限制还是有其他方法可以做到这一点?
documentation 显示多个属性被删除...
错误消息指的是这一行...
ExpressionAttributeValues: { '#param1': 'StartDate', '#param2': 'EndDate' },
ExpressionAttributeValues
不需要简单地删除属性...
尝试:
const params = {
TableName: process.env.REPORTS_TABLE,
Key: {
ReportId: removeParams.reportId
},
UpdateExpression: 'REMOVE #param1, #param2',
ReturnValues: 'UPDATED_NEW'
};
const res = await updateReport(params);
我认为问题在于您需要传入 ExpressionAttributeNames
,而不是 ExpressionAttributeValues
。