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() {
const connection = await r.connect({ db: 'test' });
await userTable.sync(connection);
await followingTable.sync(connection);
const normalUser = userTable.create({ name: 'user1' });
const premiumUser = userTable.create({ name: 'user2', isPremium: true });
await userTable.insert([
normalUser,
premiumUser,
]).run(connection);
const users = await userTable.query().coerceTo('array').run(connection);
console.log(users);
await connection.close();
}
run();
If you want to see more examples, See the Examples
API
See the API Reference.
Related Links