node package manager


AWS SimpleDB sync backend for backbone.js.

Backbone SimpleDB

Server-side overrides for Backbone to use simpledb for Model persistence.


npm install backbone-simpledb


Pass an options object when calling require(). backbone-simpledb exports an SimpleDB sdb instance and a sync method that you can use to override Backbone.sync or Model.sync for individual models.

var Backbone = require('backbone');
Backbone.sync = require('backbone-simpledb')({
    keyid: 'MyAmazonID',
    secret: 'MyAmazonSecretKey',
    domain: 'testdb'

// Backbone.sync will now load and save models from the `testdb` domain


backbone-simpledb stores models in the db using the model.url as its key. Collections retrieve models by matching the Collection url against the initial portion of the Model url.

var orange = new FruitModel({id: 'orange'});
var apple = new FruitModel({id: 'apple'});
var banana = new FruitModel({id: 'banana'});

console.log(orange.url()); // fruits/orange
console.log(apple.url());  // fruits/apple
console.log(banana.url()); // fruits/banana

var fruits = new FruitCollection();

console.log(fruits.url);   // fruits

fruits.fetch();            // retrieves orange, apple, banana


backbone-simpledb does not attempt to overcome any of SimpleDB's inherent limitations. In particular

  • Each model is restricted to 256 attributes
  • Each attribute is restricted to 1024 bytes of data

In addition, model attributes are stored using JSON.stringify in order to overcome SimpleDB's string-only attribute datatypes. This further reduces the available space per attribute for data.