删除多个项目DynammoDB

时间:2019-11-04 01:51:17

标签: amazon-dynamodb

我在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) => { ... });
}

上面的代码不起作用。

如何高效删除我的物品

1 个答案:

答案 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