我在AWS DynamoDB
中有一个数据库表
+------------+----------+-------------+---------------+
| email (PK) | uid (SK) | isConnected | connectionExp |
+------------+----------+-------------+---------------+
email
属性可以重复。
我正在尝试删除connectionExp
之后的项目。
export const delete = (e, ctx, cb) => {
const params = {
TableName: "MyTable",
/*
I want to skip Key attribute if I can.
*/
ConditionExpression: "isConnected == :isConnected and connectionExp <= :connectionExp",
ExpressionAttributeValues: {
":isConnected": false,
":connectionExp": moment().format("YYYY-MM-DD HH:mm:ss")
}
}
DYNAMO_DB.delete(params, (err, data) => { ... });
}
上面的代码不起作用。
如何高效删除我的物品
答案 0 :(得分:1)
要获取日志,请在本地运行lambda并检查调试控制台,或者如果在AWS中运行,请检查 cloudwatch日志。这将为您提供确切的错误,但是,您在注释中正确地认为密钥是必填字段,因此您的代码将无法在其当前状态下工作。
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html
您可以将表上的 TTL(生存时间)属性设置为您的 connectionExp 字段。 Dynamo将自动删除超过您的 connectionExp 字段的所有记录。但是,这不会考虑您的 isConnected 字段。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html
您还可以在表上执行扫描以查找要删除的记录(如果表增长,则速度很慢)。
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html