@giladno/dynamodb v1.0.2
dynamodb
Simple DynamoDB wrapper for Node.js
Note: This is still under active development
Installation
Requires Node.js 8.6.0+.
$ npm install @giladno/dynamodb --saveUsage
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());API
dynamodb(options)
Creates a database instance
optionsAWSAWS sdk to use. Defaults torequire('aws-sdk').waitForActiveHow long to wait for anACTIVEstate when creating a new table. Defaults to180000(3 minutes). Use0to disable waiting and-1to wait indefinitely.
- returns: a database instance
database
The database instance will automatically create a table instance simply by accessing it:
db.User.get(...);
db.Post.put(...);Names are case-sensitive.
db.useranddb.Userwill create different table names!
table.define(schema)
Defines a schema for that table
schemaattributesAn object representing attributes/keys for table creationtypeDynamoDB type (S,N,B)rangeSet totrueforRANGEkey type (default toHASHtype)
throughputProvisioned throughput. Can use a single number for both read/write capacity or an object withread/writekeys. Whenthroughputis not defined, this will set billing mode toPAY_PER_REQUEST.PAY_PER_REQUESTis not supported when testing locally using dynamodb-localkmsOptional 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).
table.init(schema)
Creates a table in DynamoDB
schemaSame as table.define
This method will be called automatically when trying to access a table which does not exist.
table.scan()
Returns all items in the table
table.get(key, options)
Finds a single item by key
table.put(data, options)
Create/update a single item
table.update(key, data, options)
Updates a single item
table.delete(data, options)
Deletes a single item
table.destroy(options)
Deletes the table
TODO
- Finish documentation
- Add query/filter/projection support
Contributing
PR's are more than welcome! You can also drop me a line at gilad@novik.ca
License
MIT