Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/giladno/dynamodb
Simple DynamoDB wrapper for Node.js
https://github.com/giladno/dynamodb
amazon-dynamodb dynamodb javascript
Last synced: about 1 month ago
JSON representation
Simple DynamoDB wrapper for Node.js
- Host: GitHub
- URL: https://github.com/giladno/dynamodb
- Owner: giladno
- License: mit
- Created: 2019-01-12T13:16:02.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-01-18T22:44:37.000Z (almost 6 years ago)
- Last Synced: 2024-04-25T21:22:50.245Z (9 months ago)
- Topics: amazon-dynamodb, dynamodb, javascript
- Language: JavaScript
- Size: 5.86 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-opensource-israel - dynamodb - A wrapper for easy access to DynamoDB ![GitHub last commit](https://img.shields.io/github/last-commit/giladno/dynamodb?style=flat-square) ![GitHub top language](https://img.shields.io/github/languages/top/giladno/dynamodb?style=flat-square "GitHub top language") (Projects by main language / Old Projects)
- awesome-opensource-israel - dynamodb - A wrapper for easy access to DynamoDB ![GitHub last commit](https://img.shields.io/github/last-commit/giladno/dynamodb?style=flat-square) ![GitHub top language](https://img.shields.io/github/languages/top/giladno/dynamodb?style=flat-square "GitHub top language") (Projects by main language / Old Projects)
README
# 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 --save
```## Usage
```js
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
- `options`
- `AWS` AWS sdk to use. Defaults to `require('aws-sdk')`.
- `waitForActive` How long to wait for an `ACTIVE` state when creating a new table. Defaults to `180000` (3 minutes). Use `0` to disable waiting and `-1` to wait indefinitely.
- returns: a database instance#### database
The database instance will automatically create a table instance simply by accessing it:
```js
db.User.get(...);
db.Post.put(...);
```> Names are case-sensitive. `db.user` and `db.User` will create **different** table names!
#### table.define(schema)
Defines a schema for that table
- `schema`
- `attributes` An object representing attributes/keys for table creation
- `type` DynamoDB type (`S`, `N`, `B`)
- `range` Set to `true` for `RANGE` key type (default to `HASH` type)
- `throughput` Provisioned throughput. Can use a single number for both read/write capacity or an object with `read`/`write` keys. When `throughput` is not defined, this will set billing mode to `PAY_PER_REQUEST`.
> `PAY_PER_REQUEST` is not supported when testing locally using **dynamodb-local**
- `kms` 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`).
#### table.init(schema)
Creates a table in DynamoDB
- `schema` Same as [table.define](#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 [email protected]
## License
MIT