@evokegroup/aws-dynamodb
v3.0.14
Published
AWS DynamoDB utilities
Downloads
18
Keywords
Readme
@evokegroup/aws-dynamodb
AWS SDK v3 DynamoDB utilities.
Put Item
const { createClient, putItem } = require('@evokegroup/aws-dynamodb');
putItem({
client: createClient({ region: 'REGION' }),
tableName: 'TABLE_NAME',
data: {
ID: 'ea8623e7-07f9-4b0e-bbd0-e11f00ccace6',
Email: '[email protected]',
FirstName: 'John',
LastName: 'Doe',
Phone: {
Mobile: '555-123-4567',
Home: '555-987-6543'
},
HowContact: ['email', 'mobile', 'home'],
DateCreated: '2022-01-01T00:00:00.000Z'
}
})
.then((response) => {
// do something
})
.catch((err) => {
// do something
})
Get Item
const { createClient, getItem } = require('@evokegroup/aws-dynamodb');
getItem({
client: createClient({ region: 'REGION' }),
tableName: 'TABLE_NAME',
key: { PK: 'ea8623e7-07f9-4b0e-bbd0-e11f00ccace6' }
})
.then((response) => {
// do something
})
.catch((err) => {
// do something
})
Update Item
const { createClient, updateItem } = require('@evokegroup/aws-dynamodb');
updateItem({
client: createClient({ region: 'REGION' }),
tableName: 'TABLE_NAME',
partitionKey: { ID: 'ea8623e7-07f9-4b0e-bbd0-e11f00ccace6' },
SET: {
FirstName: 'Jonathan',
Address: {
State: 'NY',
ZIP: '12345'
}
},
REMOVE: ['Phone.Home'],
DELETE: {
HowContact: ['home']
},
createMaps: true // This will create any undefined map (Address in this case) BEFORE updating the table. Default: true
})
.then((response) => {
// do something
})
.catch((err) => {
// do something
});
Query
const { createClient, query, transformObjectFromDDB } = require('@evokegroup/aws-dynamodb');
query({
client: createClient({ region: 'REGION' }),
tableName: 'TABLE_NAME',
indexName: 'GSI_EMAIL',
keyCondition: {
Email: '[email protected]'
}
})
.then((response) => {
if (response.Items.length == 1) {
resolve(transformObjectFromDDB(response.Items[0])); // Transform the response from the DynamoDB format to a regular object
} else {
resolve(null);
}
})
.catch((err) => {
// do something
});
Delete Item
const { createClient, deleteItem } = require('@evokegroup/aws-dynamodb');
deleteItem({
client: createClient({ region: 'REGION' }),
tableName: 'TABLE_NAME',
partitionKey: { PK: 'ea8623e7-07f9-4b0e-bbd0-e11f00ccace6'}
})
.then((response) => {
// do something
})
.catch((ex) => {
console.error(ex);
});
Batch Write
const { createClient } = require('@evokegroup/aws-dynamodb');
const { batchWrite, BatchWriteInput } = require('@evokegroup/aws-dynamodb/batch');
batchWrite({
client: createClient({ region: 'REGION' }),
batchWriteInput: [
new BatchWriteInput({
tableName: 'TABLE_NAME',
putItems: [{
ID: '*',
Email: '*'
// other data
}],
deleteItemKeys: [{ ID: '-' }]
})
]
})
.then((response) => {
// do something
})
.catch((ex) => {
console.error(ex);
});
// OR
batchWrite({
client: createClient({ region: 'REGION' }),
batchWriteInput: [
new BatchWriteInput({
tableName: 'TABLE_NAME',
putItems: [{
ID: '*',
Email: '*'
// other data
}],
deleteItemKeys: [{ ID: '-' }]
})
],
awaiter: true
})
// wait(callback, pollingTimeout = 10000)
// pass a polling timeout in milliseconds as the 2nd parameter to poll faster or slower
// starts execution and returns a Promise
.wait((awaiter) => {
console.log(`Batches remaining: ${awaiter.remainint()}`);
})
.then((response) => {
// do something
})
.catch((ex) => {
console.error(ex);
});
Create Table
const { createClient } = require('@evokegroup/aws-dynamodb');
const { StringPartitionKeyField, StringSortKeyField } = require('@evokegroup/aws-dynamodb/fields');
const { createTable } = require('@evokegroup/aws-dynamodb/table');
require('@evokegroup/aws-dynamodb/logger').configure({ level: 'INFO' });
createTable({
client: createClient({ region: 'REGION' }),
tableName: 'TABLE_NAME',
partitionKey: new StringPartitionKeyField({ name: 'PK' }),
sortKey: new StringSortKeyField({ name: 'SK' })
})
.then((response) => {
// do something
})
.catch((ex) => {
console.error(ex);
});
Logger
Send messages logged by the library to a Console
.
const { configure, LogLevel } = require('@evokegroup/aws-dynamodb/logger');
configure({
level: LogLevel.DEBUG, // default: OFF
timestamp: true, // default: false
messageType: true, // default: false
Console: null // create your own Console object to log to somewhere other that the global console
});
require('@evokegroup/aws-dynamodb/logger').configure({ level: 'ERROR' });