node package manager
It’s your turn. Help us improve JavaScript. Take the 2017 JavaScript Ecosystem Survey »


Dynamoose Build Status

Dynamoose is a modeling tool for Amazon's DynamoDB (inspired by Mongoose)

Getting Started


$ npm install dynamoose


Set AWS configurations in enviroment varable:

export AWS_ACCESS_KEY_ID="Your AWS Access Key ID"
export AWS_SECRET_ACCESS_KEY="Your AWS Secret Access Key"
export AWS_REGION="us-east-1"

Here's a simple example:

var dynamoose = require('dynamoose');
// Create cat model with default options
var Cat = dynamoose.model('Cat', { id: Number, name: String });
// Create a new cat object
var garfield = new Cat({id: 666, name: 'Garfield'});
// Save to DynamoDB;
// Lookup in DynamoDB
.then(function (badCat) {
  console.log('Never trust a smiling cat. - ' +;

API Docs

The documentation can be found at

Change log

Release 0.8

  • useNativeBooleans #55
  • saveUnknown #125
  • Support for multiple indexes defined on the hashkey attribute of the table
  • scan.all() #93 #140
  • scan.parallel d7f7f77
  • TTL support 92994f1
  • added schema parsing overrides #145
  • populate #137
  • Added consistent() to scan. #15 #142
  • Default function enhancements #127
  • Create required attributes on update #96
  • Add typescript typings #123
  • Added .count() for Query and Scan #101
  • Nested scans #141 #158


Release 0.9

The goal of release 0.9 is to increase the parity with mongoose. The primary purpose will be to come up with a plugin system similar to that of mongoose although not necessarily compatible.

  • Plugin system
  • Model.find alias
  • Complete .populate support

Release 1.0

The main goal of 1.0 will be to improve the code and refactor to ES2015 (ES6). In addition, useNativeBooleans and useDocumentTypes will be toggled to make uses of "newer" DynamoDB features by default.

  • ES2015 updates
  • Switch to ESLint
  • Set useNativeBooleans and useDocumentTypes to default to true