1.2.1 • Published 8 years ago
dynamodbeasy v1.2.1
dynamodb-easy
Working with dynamodb can be a hassle, because the dynamodb API is very verbose and cumbersome to work with. This small library only provides three functions that makes it easier to work with dynamodb. It also changes the output of the dynamodb api to JSON that makes sense.
What is not supported
- Anything else than strings, numbers and booleans
- Anything else than
=
in the query. - Pagination
- Scan
I may change this in the future.
Initialize
var ddbEasy = require('dynamodbeasy');
Ideally your config is not in the code. But if you have no choice, you just do something like loading dynamodb. So instead of this:
var aws = require('aws-sdk');
var ddb = new aws.DynamoDB(someConfig);
Do this:
var ddbEasy = require('dynamodbeasy')(someConfig);
Output
All result.Items
are transformed into normal JSON. From this:
{
"Something": {
"S": "something"
},
"SomeNumber": {
"N": '12345'
}
}
To:
{
"Something": "something",
"SomeNumber": 12345
}
Functions
Query
Instead of this:
var params = {
TableName: 'some-table',
KeyConditionExpression: '#something = :something AND #else = :else',
ExpressionAttributeNames: {
'#something': 'something',
'#else': 'else'
},
ExpressionAttributeValues: {
':something': { S: 'someValue' },
'else': { S: 'elseValue' }
},
IndexName: 'some-index'
};
dynamodb.query(params, callback);
Use this:
var params = {
table: 'some-table',
index: 'some-index',
condition: {
something: 'someValue',
else: 'elseValue'
}
}
dynamodbeasy.query(params, callback)
UpdateItem
Instead of this:
var params = {
TableName: 'some-table',
UpdateExpression: 'SET #something = :something AND #else = :else',
ExpressionAttributeNames: {
'#something': 'something',
'#else': 'else'
},
ExpressionAttributeValues: {
':something': { S: 'someValue' },
'else': { S: 'elseValue' }
},
Key: {
id: { S: 'someId' },
numberKey: { N: '12345' }
}
};
dynamodb.updateItem(params, callback);
Use this:
var params = {
table: 'some-table',
key: {
id: 'someId',
numberKey: 12345
},
data: {
something: 'someValue',
else: 'elseValue'
}
}
dynamodbeasy.updateItem(params, callback)
PutItem
Instead of this:
var params = {
TableName: 'some-table',
Item: {
id: { S: 'someId' },
numberKey: { N: '12345' }
}
};
dynamodb.putItem(params, callback);
Use this:
var params = {
table: 'some-table',
data: {
id: 'someId',
numberKey: 12345
}
}
dynamodbeasy.putItem(params, callback)
DeleteItem
Instead of this:
var params = {
TableName: 'some-table',
Key: {
id: { S: 'someId' },
numberKey: { N: '12345' }
}
};
dynamodb.deleteItem(params, callback);
Use this:
var params = {
table: 'some-table',
key: {
id: 'someId',
numberKey: 12345
}
}
dynamodbeasy.deleteItem(params, callback)