Model Requests
Single model requests you can execute on a DynamoStore.
General
Creation
All model requests are created by using the corresponding method on a DynamoStore instance. A new request instance for the related model/table will be returned.
Request Params
Every request instance contains the public params
property where all params for the request are written to. You might want to use it for debugging purpose but are also able to write on it (eg. non-covered features).
Consumed Capacity
You might want to receive the consumed capacity which can be achieved by applying the returnConsumedCapacity('INDEXES' | 'TOTAL')
method and the usage of execFullResponse()
instead of exec()
.
Execution
All requests provide at least two execution methods:
exec()
returns a promise which will resolve to the requested items or void if no items were requestedexecFullResponse()
returns a promise which will resolve to the full response DynamoDB returns, butresponse.Items
are still mapped for you.
Get
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'
new DynamoStore(Person)
.get('wernerv') // returns an instance of GetRequest
.consistentRead(true) // sets params.ConsistentRead = true
.exec() // returns a Promise<Person|null>
.then(obj => console.log(obj))
Put
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'
const objectToPut: Person = {
id: 'vogelsw',
name: 'Werner Hans Peter Vogels',
yearOfBirth: 1958,
} // object literal or new Person(...)
new DynamoStore(Person)
.put(objectToPut)
.ifNotExists()
.exec()
.then(() => console.log('done'))
Update
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { AnotherModel } from '../models'
const oneHourAgo = new Date(Date.now() - 1000 * 60 * 60)
new DynamoStore(AnotherModel)
.update('myPartitionKey', 'mySortKey')
.updateAttribute('propC').set('newValue')
.updateAttribute('updated').set(new Date())
.onlyIfAttribute('updated').lt(oneHourAgo)
.exec()
.then(() => console.log('done'))
Delete
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'
new DynamoStore(Person)
.delete('vogelsw')
.onlyIfAttribute('yearOfBirth').lte(1958)
.exec()
.then(() => console.log('done'))
Query
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { AnotherModel } from '../models'
new DynamoStore(AnotherModel)
.query()
.wherePartitionKey('2018-01')
.whereSortKey().beginsWith('a')
.execSingle()
.then(r => console.log('first found item:', r))
Scan
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'
new DynamoStore(Person)
.scan()
.whereAttribute('yearOfBirth').equals(1958)
.execFetchAll()
.then(res => console.log('ALL items with yearOfBirth == 1958', res))
BatchGet
This is a special implementation from BatchGetRequest which only allows to read from a single table.
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'
new DynamoStore(Person)
.batchGet([{ id: 'a' }, { id: 'b' }])
.exec()
.then(res => console.log('fetched items:', res))
BatchWrite
This is a special implementation from BatchWriteRequest which only allows to write to a single table
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'
new DynamoStore(Person)
.batchWrite()
.delete([{ id: 'a' }, { id: 'b' }])
.put([{ id: 'vogelsw', name: 'Werner Hans Peter Vogels', yearOfBirth: 1958 }])
.exec()
.then(() => console.log('item a, b deleted; werner vogels added'))
TransactGet
This is a special implementation from TransactGetRequest which only allows to read from a single table.
import { DynamoStore } from '@shiftcoders/dynamo-easy'
import { Person } from '../models'
new DynamoStore(Person)
.transactGet([{ id: 'a' }, { id: 'b' }])
.exec()
.then(() => console.log('transactionally read a and b'))
Last updated
Was this helpful?