2017-08-28 104 views
1

我想和失败,删除条件的记录。我不断收到此错误:The provided key element does not match the schema无服务器:dynamodb删除条件

这是我在阳明定义:

resources: 
    Resources: 
    vuelosTable: 
     Type: 'AWS::DynamoDB::Table' 
     DeletionPolicy: Delete 
     Properties: 
     AttributeDefinitions: 
      - 
      AttributeName: id 
      AttributeType: S 
      - 
      AttributeName: vuelta 
      AttributeType: S 
     KeySchema: 
      - 
      AttributeName: id 
      KeyType: HASH 
      - 
      AttributeName: vuelta 
      KeyType: RANGE 
     ProvisionedThroughput: 
      ReadCapacityUnits: 1 
      WriteCapacityUnits: 1 
     TableName: ${self:provider.environment.DYNAMODB_TABLE} 

这些试图删除的时候是PARAMS:

params = { 
    RequestItems: { 
     [process.env.DYNAMODB_TABLE]: [{ 
     DeleteRequest: { 
      Key: { 
      "vuelta": "2017-09-09" 
      } 
     } 
     }] 
    } 
    }; 

我知道这件事情,我没有得到,但我不知道什么。有任何想法吗?

回答

0

您的表格密钥既是id也是vuelta,但您只是在删除请求中提供了vuelta。修改您的删除请求中的密钥,使其包含idvuelta

另外,根据您的客户端库可能需要指定

Key: { 
    id: { S: "some value" }, 
    vuelta: { S: "some value" } 
} 
+0

好的,但限制了我。我必须有ID才能删除。我希望能够删除只有vuelta值。另外,考虑到vuelta在不同记录中并不是唯一的。 – yBrodsky

+0

DeleteItem仅删除单个项目。没有批量删除API。唯一的选择是扫描/查询表或其索引以找到密钥,然后单独删除它们。 –

+0

我正在使用batchWrite,它可以用来放置/删除文档。 http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html – yBrodsky