Ashima
Ashima

Reputation: 4824

Convert DynamoDb stringset into JSON

This is one of the fields of StringSet type that is returned from DynamoDb.

permissions:
       Set {
         wrapperName: 'Set',
         values:
          [ 'BannerConfigReadOnly',
            'CampaignBannerCreate',
            'CampaignPromoCreate',
            'CampaignReadOnly',
            'MasterplanReadOnly',
            'SegmentCreate',
            'SegmentDownload',
            'SegmentUpload' ],
         type: 'String' } 
    }

Now, I am using aws.DynamoDB.Converter.unmarshal function to get it in this format

permissions: ['BannerConfigReadOnly',
            'CampaignBannerCreate',
            'CampaignPromoCreate',
            'CampaignReadOnly',
            'MasterplanReadOnly',
            'SegmentCreate',
            'SegmentDownload',
            'SegmentUpload']

But, this is what i get

{}

Any ideas what, I may be doing wrong.

This is my code

const aws = require('aws-sdk');
const documentClient = new aws.DynamoDB.DocumentClient();
documentClient.scan(params, (err, data) => {
    if (err) {
      reject(err);
    } else {
      let processedItems = [...data.Items];
    var test = aws.DynamoDB.Converter.unmarshall(processedItems[0].permissions);
      console.log(`test is ${JSON.stringify(test)}`);
    }});

ProcessedItems[0] is this

{ email: '[email protected]',
  tenant: 'Canada',
  permissions:
   Set {
     wrapperName: 'Set',
     values:
      [ 'BannerConfigReadOnly',
        'CampaignBannerCreate',
        'CampaignPromoCreate',
        'CampaignReadOnly',],
     type: 'String' } }

Upvotes: 0

Views: 2486

Answers (1)

cementblocks
cementblocks

Reputation: 4596

That data is already unmarshalled since you are using the DocumentClient. Consider just using processedItems[0].permissions.values to get the values of the set.

Upvotes: 1

Related Questions