我正在使用DynamoDB作为基于事件的社交应用程序,例如 - 不像参加-not_attending。
我有兴趣了解如何在DynamoDB Item中的StringSet属性中添加或删除项目。
这是对象结构
"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"
}
}
}
}
}
我想在“赞”字符串集中添加或删除一个条目 “喜欢”:{ “SS”:[ “12”, “321”, “69” ] }, 相应地,用户喜欢 - 与事件不同。 我怎么能这样做?
答案 0 :(得分:0)
我无法在第三或第四个孩子级别更新/编辑项目。
在这里,您可以使用此方法从第二个子级别上设置的字符串中添加/删除项目。
AWSDynamoDB * dynamoDB = [AWSDynamoDB defaultDynamoDB];
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 =@{
@"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;
}];
- >用于添加项目 valueUpdate.action = AWSDynamoDBAttributeActionAdd;
- >删除项目 valueUpdate.action = AWSDynamoDBAttributeActionDelete;
希望它会对某人有所帮助。