A simple @aws-sdk/client-dynamodb wrapper that makes single table dynamodb queries easy to use.
I personally use this package on my DynamoDB single table data design.
Will ignore data that has been deleted (softly). The package will check if the
isDeleted
property of the DB Record has been set to true. If so, the package
will return undefined in its place.
When using the package in AWS Lambda and defining the environment variable in aws-cdk, the environment variables can be used to reduce the amount of boilerplate code needed in your lambda.
environment: {
DYNAMODB_TABLE: 'table-name',
DYNAMODB_REGION: 'us-east-1',
},
const client = DynamoDB.fromEnvironment();
client
will be set to the correct table and region in one line of code.
await client.getItem(primaryKey, sortKey);
Get item will dispatch a GetCommand
to the DynamoDBDocumentClient
. The
value will be checked to make sure it has not been soft deleted, and then it
will be returned to the user. If the Record is not found, undefined
is
returned.
const item = {
primaryKey: 'abc',
sortKey: '123',
data: 'some data',
};
await client.putItem(item);
Get item will dispatch a PutCommand
to the DynamoDBDocumentClient
. A new
record will be created in the database with the item as it's data.
await client.deleteItem(primaryKey, sortKey);
Get item will dispatch a DeleteCommand
to the DynamoDBDocumentClient
. If
the record exists, it will be deleted. Otherwise nothing happens.
await client.queryPrimaryIndex(primaryKey);
Get item will dispatch a QueryCommand
to the DynamoDBDocumentClient
. All
records with the primary key will be returned to the caller.
await client.queryPrimaryIndex(primaryKey, beginsWith, { limit: 10 });
Optionally, you can specify what the sort key begins with. All the records that match the primary key and fulfil the sort key begins with constraint will be returned.
Does the same as queryPrimaryIndex except on a secondary index called gsi
.
await client.querySecondaryIndex(secondaryKey);
Get item will dispatch a QueryCommand
to the DynamoDBDocumentClient
. All
records with the secondary key will be returned to the caller.
await client.querySecondaryIndex(secondaryKey, beginsWith, { limit: 10 });
Optionally, you can specify what the sort key begins with. All the records that match the secondary key and fulfil the sort key begins with constraint will be returned.