Most ORMs/ODMs only work with a single datastore, and most JavaScript ORMs only work in Node.js or the Browser—not both. Wouldn't it be nice if you could use the same ORM in the browser that you use on the server? Wouldn't it be nice if you could change databases or frameworks without having to rewrite your data layer code? Enter JSData.

Originally inspired by the desire to have something like Ember Data that worked in Angular.js and other frameworks, JSData was created. Turns out, JSData works in Node.js, so server-side adapters have been written. JSData is the Model layer you've been craving. It consists of a convenient framework-agnostic, datastore-agnostic ORM for managing your data, which uses adapters to connect to various persistence layers.

The most commonly used adapter is the HTTP adapter, which is perfect for connecting your frontend to your backend. localStorage, localForage and Firebase adapters are also available for the browser. On the server you could hook up to the SQL adapter (Postgres/MySQL/MariaDB/SQLite3), MongoDB, or RethinkDB adapters. More adapters are coming, and you're free to implement your own.

Here's a talk on JSData: