Skip to content

serialize dynamodb style documents into and out of objects

License

Notifications You must be signed in to change notification settings

awspilot/dynamodb-util

Repository files navigation

dynamodb-util

Build Status License Dependencies

serialize dynamodb style documents into and out of objects


var util = require('@awspilot/dynamodb-util')


// default settings
util.config.stringset_parse_as_set  = false; // by default array is returned
util.config.numberset_parse_as_set  = false; // by default array is returned
util.config.binaryset_parse_as_set  = false; // by default array is returned
util.config.empty_string_replace_as = "";    // no replacement, by default


// handling StringSet and NumberSet

// recommended for node 0.12+
util.config.stringset_parse_as_set = true;  // will return new Set(...)
util.config.numberset_parse_as_set = true;  // will return new Set(...)

// ways arround empty string limit in DynamoDB

util.config.empty_string_replace_as = "\0";
// stringify() will return\0 and parse() will convert it back to ''


util.config.empty_string_replace_as = undefined; 
// stringify() will ignore the attribute for String and Map
// stringify() will leave it untouched for List ( DynamoDB will throw error instead ob breaking the index )
// stringify() will leave it untouched for StringSet ( DynamoDB will throw error  )



// stringify() will return null, parse() will convert it back to null ( looses the empty string )
util.config.empty_string_replace_as = null;


util.parse( { S: 'text' } ) 
	=> 'text'

util.parse( { M: { number: {N: '1'}, string: {S: 'text'}, bool: { BOOL: true}, } } ) 
	=> { number: 1, string: "text", bool: true }

util.stringify( 'text' ) 
	=> { S: 'text'}

util.stringify( { number: 1, bool: true, } ) 
	=> { 'M': { number: {N: '1'}, bool: { BOOL: true}, } }

util.stringify( { s1: new Set([1,2,3]), s2: new Set(['a','b','c']) } ) 
	=> { 'M': { s1: {NS: ['1','2','3']}, s2: { SS: ['a','b', 'c']}, } }

// empty Set is converted as DynamoDB List
// mixed type Sets are also converted to DynamoDB List

util.stringify( { s1: new Set(), s2: new Set(['a',1) } ) 
	=> { 'M': { s1: { L: [ ] }, s2: { L: [ 'a', 1 ]}, } }

About

serialize dynamodb style documents into and out of objects

Resources

License

Stars

Watchers

Forks

Packages

No packages published