a2call / meteor-rethinkdb

RethinkDB integration for Meteor

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#RethinkDB integration for Meteor

meteor add simple:rethink

This packages aims to provide a first-class experience working with RethinkDB building full-stack real-time web and mobile apps on the Meteor framework.

The goals and plans of this package:

  • Raw access to RethinkDB on the server, no ORMs
  • Client-side cache accessible with the RethinkDB query language (ReQL)
  • Use Meteor's publications/subscriptions model
  • Take advantage of Meteor's "Latency Compensation" propeties (optimistic client-side updates without waiting for a server to respond)
  • User accounts stored in RethinkDB and not in MongoDB (in plans)

##Using the Package

Adding a package is as simple as running the following command in your app's folder:

meteor add simple:rethink

The package will connect to a RethinkDB instance by looking at the RETHINK_URL environment variable.

env RETHINK_URL=rethinkdb://user:password@hostname:port/database meteor run

If you have an instance of RethinkDB running locally on your development computer, the package will automatically connect to it on localhost:28015.

###Tables

Declare a table connected to the database on the server and a client-side cache on the client, (be sure that you have created the table in your database before-hand):

Players = Rethink.Table('players');

You can query the data using ReQL:

console.log('Number of players:', Players.count().run());
console.log('All players:', Players.run().toArray());

There is a shortcut for fetching the documents without turning a cursor into an array:

console.log('All players:', Players.fetch());

For constructing more complex queries, you can use the Rethink.r namespace.

var r = Rethink.r;

// Top Players
Players.orderBy(r.dsc('score')).limit(3).fetch();

##Package Development

Since the package relies on RethinkDB node driver and Reqlite to build the package, make sure npm is available and ready for use. Then run the build script:

./driver-source/build.sh

This script will output a built version of Reqlite and driver for the client-side cache.

##Running tests

Build the package first, then run the tests.

./driver-source/build.sh
meteor test-packages --driver-package respondly:test-reporter

About

RethinkDB integration for Meteor


Languages

Language:JavaScript 96.3%Language:Shell 3.7%