Some Light Abstraction for RethinkDB
The RethinkDB Node driver is already very simple to use, but there are methods that I wish I "just had" at the ready. Those are:
- Query, which returns an array
- First, Exists
- Save, which upserts a record
- Automatic table/db config
- DB Manipulation (Create/Drop)
So I created it. That's what we have here.
In addition, I love Meteor.js and thought I would try to support its synchronous nature as best I could. I know that Meteor uses Fibers, but they can cause problems if you're not completely in control of them.
So, SecondThought uses the deasync
library to "virtually unblock" the synchronous calls. The thread won't be blocked when you use these sync methods, but the consecutive code calls will. It's expermental, at best.
Usage
Install using
npm install secondthought --save
To use this in your code, just configure what you need:
var DB = ;DB;
You can do this synchronously as well:
var SecondThought = ;var db = SecondThought;var newRecord = dbfoo;
You can intermix the sync/async stuff all you like. Each method you see below has an sync counterpart which you can use by attaching Sync
to the method name.
Each table on your DB object is a full-blown RethinkDB table, so you can step outside the abstraction at any point:
db;
In addition you can do all kinds of fun things, like...
//installation of the DB and tablesdb; //add a secondary indexdb;
Basic Queries
I've tried to keep the API light and simple - with just a bit of sugar to keep the repetetive stuff to a minimum:
db
Have a look at the tests to see a bit more
Wanna Help?
Just do me a favor and open a PR with some ideas and hopefully a test or two. Thanks!