remodel

0.0.4 • Public • Published

Remodel

Generator-based query interface for rethinkdb.

A simple wrapper around the excellent rethinkdb lib, with generator support, and some modeling goodness thrown in.

Installation

$ npm install remodel

Example

var r = require('rethinkdb');
var co = require('co');
 
var remodel = require('remodel')('localhost');
 
var User = remodel.create('Users');
 
co(function *() {
  var dbList = yield remodel(r.dbList());
  var user = yield User.filter({email: 'a@test.com'});
})();

Usage

var r = require('rethinkdb');
 
// Provide connection details when requiring remodel.
// These connection details are passed directly to reql-then
// which sets up a connection pool for you
remodel = require('remodel'){
  host: 'localhost',
  port: 28015,
  db: 'test',
  authKey: '',
  maxPoolSize: 10 // set to 1 to disable connection pooling
});
 
// query interface
function *() {
  // accepts any rethinkdb query
  // returns actual results, not a cursor
  yield remodel.query(r.dbList());
  yield remodel.query(r.db('test').tableList());
  yield remodel.query(r.db('test').table('Users').insert({email: 'test@test.com'}));
 
  // aliases
  yield remodel.q(r.dbList());
  yield remodel(r.dbList());
}
 
// model interface
var User = remodel.create('Users'); // pass the table name
function *() {
  yield User.all(); // returns all users
 
  // add your own helper finder methods
  User.findByEmail = function *(email) {
    return yield this.filter({email: email.trim().toLowerCase()});
  }
 
  // use regular rethinkdb querying
  var user = yield User.get(1234); // primary key lookup
  var users = yield User.filter({email: 'test@test.com'});
  var users = yield User.getAll('test@test.com', {index: 'email'}); // use an index for faster querying
 
  // complete list
  yield User.between
  yield User.count
  yield User.filter
  yield User.forEach
  yield User.get
  yield User.getAll
  yield User.groupBy
  yield User.groupedMapReduce
  yield User.indexCreate
  yield User.indexList
  yield User.indexWait
  yield User.info
  yield User.insert
  yield User.limit
  yield User.map
  yield User.orderBy
  yield User.pluck
  yield User.skip
  yield User.union
  yield User.withFields
  yield User.without
}

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i remodel

Weekly Downloads

4

Version

0.0.4

License

MIT

Last publish

Collaborators

  • speedmanly