2017-08-28 4 views
1

J'essaie, et j'échoue, de supprimer un enregistrement avec une condition. Je continue d'obtenir cette erreur: The provided key element does not match the schema.Serverless: dynamodb delete where condition

C'est ma définition dans le YML:

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} 

Ce sont les params lorsque vous essayez de supprimer:

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

Je sais qu'il est quelque chose que je ne reçois pas, mais je ne sais pas quelle. Des idées?

Répondre

0

Votre clé de table est à la fois id et vuelta mais vous ne fournissez que vuelta dans la demande de suppression. Modifiez la clé dans votre demande de suppression afin qu'elle contienne à la fois le id et le vuelta.

également, en fonction de votre bibliothèque client peut avoir besoin de spécifier

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

D'accord, mais qui me limite. Je dois avoir l'ID pour supprimer. Je veux être en mesure de supprimer ayant seulement la valeur Vuelta. En outre, considérons que la vuelta n'est pas unique parmi différents enregistrements. – yBrodsky

+0

DeleteItem ne supprime qu'un seul élément. Il n'y a pas d'API de suppression groupée. Votre seule option est de scanner/interroger la table ou ses index pour trouver les clés puis les supprimer individuellement. –

+0

J'utilise batchWrite, qui peut être utilisé pour mettre/supprimer des documents. http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html – yBrodsky