1.2.1 • Published 8 years ago

dynamodbeasy v1.2.1

Weekly downloads
2
License
ISC
Repository
github
Last release
8 years ago

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)
1.2.1

8 years ago

1.2.0

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago