在DynamoDBItem

时间:2017-08-11 07:19:18

标签: ios objective-c swift amazon-dynamodb aws-sdk

我正在使用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”             ]           }, 相应地,用户喜欢 - 与事件不同。 我怎么能这样做?

1 个答案:

答案 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;

希望它会对某人有所帮助。