Simple DynamoDB wrapper for Node.js
Note: This is still under active development
Requires Node.js 8.6.0+.
$ npm install @giladno/dynamodb --save
const dynamodb = require('@giladno/dynamodb');
const {User} = dynamodb();
User.define({
attributes: {username: {type: 'S'}},
throughput: 5,
});
await User.put({username: 'bob', age: 42});
await User.put({username: 'alice', age: 38});
console.log(await User.scan());
Creates a database instance
options
AWS
AWS sdk to use. Defaults torequire('aws-sdk')
.waitForActive
How long to wait for anACTIVE
state when creating a new table. Defaults to180000
(3 minutes). Use0
to disable waiting and-1
to wait indefinitely.
- returns: a database instance
The database instance will automatically create a table instance simply by accessing it:
db.User.get(...);
db.Post.put(...);
Names are case-sensitive.
db.user
anddb.User
will create different table names!
Defines a schema for that table
schema
attributes
An object representing attributes/keys for table creationtype
DynamoDB type (S
,N
,B
)range
Set totrue
forRANGE
key type (default toHASH
type)
throughput
Provisioned throughput. Can use a single number for both read/write capacity or an object withread
/write
keys. Whenthroughput
is not defined, this will set billing mode toPAY_PER_REQUEST
.PAY_PER_REQUEST
is not supported when testing locally using dynamodb-localkms
Optional KMS master key to use.
This method is only required if you want to allow the database to create tables implicitly when required. It is not required if you create them yourself (using the CLI/CloudFormation or by calling
table.init
).
Creates a table in DynamoDB
schema
Same as table.define
This method will be called automatically when trying to access a table which does not exist.
Returns all items in the table
Finds a single item by key
Create/update a single item
Updates a single item
Deletes a single item
Deletes the table
- Finish documentation
- Add query/filter/projection support
PR's are more than welcome! You can also drop me a line at gilad@novik.ca
MIT