nothinkdb

0.5.35 • Public • Published

npm version Build Status

Nothinkdb

Functional toolkit for rethinkdb.

Currently, Compitable with rethinkdb 2.2.x

  • define declarative table schema.
  • handle schema validation with joi.
  • handle default fields like id, createdAt, updatedAt.
  • ensure table, secondary index.
  • ensure unique field.
  • fully customizable 1-n, 1-1, n-1, n-m relations.
  • define, create, remove, check, query, join relations.
  • many useful query generator.
  • easily implement graphql server with nothinkdb-graphql

Install

npm install -S nothinkdb

Example

import Joi from 'joi';
import r from 'rethinkdb';
import { Table, schema } from 'nothinkdb';
 
const userTable = new Table({
  tableName: 'user',
  schema: () => ({
    id: schema.id,
    name: Joi.string().required(),
    isPremium: Joi.boolean().default(false),
  }),
});
 
async function run() {
  // open rethinkdb connection
  const connection = await r.connect({ db: 'test' });
 
  // sync table
  await userTable.sync(connection);
  await followingTable.sync(connection);
 
  // create user data
  const normalUser = userTable.create({ name: 'user1' });
  const premiumUser = userTable.create({ name: 'user2', isPremium: true });
 
  // insert user data into rethinkdb server
  await userTable.insert([
    normalUser,
    premiumUser,
  ]).run(connection);
 
  // getAll users
  const users = await userTable.query().coerceTo('array').run(connection);
 
  console.log(users);
 
  // close rethinkdb connection
  await connection.close();
}
 
run();

If you want to see more examples, See the Examples

API

See the API Reference.

Related Links

Package Sidebar

Install

npm i nothinkdb

Weekly Downloads

57

Version

0.5.35

License

MIT

Last publish

Collaborators

  • lustdante
  • jeongsd
  • ironhee