2017-08-11 5 views
0

J'utilise DynamoDB pour une application sociale basée sur des événements, comme-contrairement à la participation-not_attending.Ajouter/supprimer un élément d'un ensemble de chaînes dans DynamoDBItem

Je voudrais savoir comment ajouter ou supprimer un élément d'un attribut StringSet dans DynamoDB Item.

Voici la structure des objets

"userId": { 
    "S": "69" 
    }, 
    "fName": { 
    "S": "mfName" 
    }, 
    "lName": { 
    "S": "mlName" 
    }, 
    "picture": { 
    "S": "https://s3-us-west-2.amazonaws.com/users/mfName_1000049788.jpg" 
    }, 
    "events": { 
    "M": { 
     "1502199358": { 
     "M": { 
      "created": { 
      "S": "1502199358.443022" 
      }, 
      "eventId": { 
      "S": "-1" 
      }, 
      "galleryId": { 
      "S": "1502199358" 
      }, 
      "image": { 
      "S": "https://s3.amazonaws.com/events/public/clyp_1502199358.jpg" 
      }, 
      "likes": { 
      "SS": [ 
       "12", 
       "321", 
       "69" 
      ] 
      }, 
      "modified": { 
      "S": "1" 
      }, 
      "video": { 
      "S": "n_p" 
      }, 
      "videothumb": { 
      "S": "n_p" 
      } 
     } 
     } 
    } 
    } 

et je voudrais ajouter ou supprimer une entrée dans "aime" StringSet "aime": { "SS": [ "12", " 321 ", " 69 " ] }, en conséquence un utilisateur aime-contrairement à l'événement. comment puis-je faire cela?

Répondre

0

Je n'ai pas pu mettre à jour/éditer l'élément au troisième ou quatrième niveau enfant.

Ici, vous pouvez utiliser cette méthode pour ajouter/supprimer un élément d'une chaîne au deuxième niveau enfant.

AWSDynamoDB * dynamoDB = [AWSDynamoDB par défautDynamoDB];

AWSDynamoDBAttributeValue * itemToUpdate = [AWSDynamoDBAttributeValue new]; 
itemToUpdate.S = self.userID; 

AWSDynamoDBUpdateItemInput *updateItemInput = [AWSDynamoDBUpdateItemInput new]; 
updateItemInput.tableName = @"MyTable"; 
updateItemInput.key= @{ 
         @"userId" : itemToUpdate 
         }; 

NSArray * likesArray = [NSArray arrayWithObjects:@"12", nil]; 
AWSDynamoDBAttributeValue * awsDynamoDBAttributeValue = [AWSDynamoDBAttributeValue new]; 
awsDynamoDBAttributeValue.SS = likesArray; 

AWSDynamoDBAttributeValueUpdate * valueUpdate = [AWSDynamoDBAttributeValueUpdate new]; 
valueUpdate.value = awsDynamoDBAttributeValue; 
valueUpdate.action = AWSDynamoDBAttributeActionDelete; 

updateItemInput.attributeUpdates [email protected]{ 
            @"likes":valueUpdate 
           }; 

[[dynamoDB updateItem:updateItemInput] 
continueWithBlock:^id(AWSTask *task) { 
    if (task.error) { 
     NSLog(@"The request failed. Error: [%@]", task.error); 
    } 
    if (task.result) { 
     //Do something with result. 
    } 
    return nil; 
}]; 

-> pour ajouter un élément valueUpdate.action = AWSDynamoDBAttributeActionAdd;

-> pour supprimer un élément valueUpdate.action = AWSDynamoDBAttributeActionDelete;

Espérons que cela aiderait quelqu'un.