Dynamodb放置项覆盖旧项

时间:2019-06-20 17:21:22

标签: javascript amazon-web-services amazon-dynamodb

我的表格定义如下:

Type: "AWS::DynamoDB::Table"
  Properties:
    AttributeDefinitions:
      - AttributeName: "deviceId"
        AttributeType: "S"
    KeySchema:
      - AttributeName: "deviceId"
        KeyType: "HASH"

我调用以下代码以添加新条目

    this.client = new AWS.DynamoDB.DocumentClient();

    public saveItem(entry): Promise<any> {

    let dbEntry = Database.decorateWithStandardFields(JSON.parse(entry));

    const params = {
        TableName: eventLogTable,
        Item: dbEntry
    };

    console.log('save this to db', params);
    return this.client.put(params).promise();
}

2个不同的条目是

     { TableName: 'sls-basic-operations-items-dev',
        Item: 
        { 
          status: 'changed',
          deviceId: 'device12345',
          wkStation: 'xyz',
          Timestamp: 1561050389,
          TTL: 1561136789 
        } 
     }

第二个仅在时间戳和TTL值上有所不同。

    { TableName: 'sls-basic-operations-items-dev',
      Item: 
      { 
        status: 'changed',
        deviceId: 'device12345',
        wkStation: 'xyz',
        Timestamp: 1561050417,
        TTL: 1561136817 
       } 
     }

使用此代码,我总是得到一个项目,它是最后一个项目。

此代码有什么问题?

1 个答案:

答案 0 :(得分:1)

您的表只有一个哈希键,因此只能有一条记录具有给定的deviceID。

似乎您可能想将时间戳定义为排序键。