thinkagain
A Node.js ODM for RethinkDB featuring first-class support for JSON schema
Last updated 4 years ago by mbroadst .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install thinkagain 
SYNC missed versions from official npm registry.

thinkagain

Build Status Test Coverage

ThinkAgain is a fork of thinky with first-class support for json-schema using ajv for validation.

Install

npm install --save thinkagain

Quick Start

const thinkagain = require('thinkagain')(/* rethinkdbdash options */);

// Create a model - the table is automatically created
let Post = thinkagain.createModel('Post', {
  type: 'object',
  properties: {
    id: { type: 'string' },
    title: { type: 'string' },
    content: { type: 'string' },
    idAuthor: { type: 'string' }
  },
  required: [ 'title' ]
});

let Author = thinkagain.createModel('Author', {
  type: 'object',
  properties: {
    id: { type: 'string' },
    name: { type: 'string' }
  },
  required: [ 'name' ]
});

// Join the models
Post.belongsTo(Author, 'author', 'idAuthor', 'id');

// Create a new post
let post = new Post({
  title: 'Hello World!',
  content: 'This is an example.'
});

// Create a new author
var author = new Author({
  name: 'Llama'
});

// Join the documents
post.author = author;

// Save everything
post.saveAll()
  .then(result => console.log(result));

/*
output:
{
  id: '0e4a6f6f-cc0c-4aa5-951a-fcfc480dd05a',
  title: 'Hello World!',
  content: 'This is an example.',
  idAuthor: '3851d8b4-5358-43f2-ba23-f4d481358901',
  author: {
    id: '3851d8b4-5358-43f2-ba23-f4d481358901',
    name: 'Llama'
  }
}
*/

Notes

Presently this is, for the most part, a drop-in replacement for thinky, with a few notable changes:

  • Table schemas explicitly use json-schema instead of thinky's home brewed schemas
  • Virtual fields are not (yet) implemented
  • All validation is asynchronous
  • All validation options (enforce_missing, enforce_extra, enforce_type) have been removed in favor of equivalents in either json-schema itself, or options in ajv.
  • Node.js 4+ is required

Credits

  • Many thanks to neumino for his great work on thinky, without which this module would not be possible.
  • Additional thanks to epoberezkin for his fantastic work on ajv.

Current Tags

  • 0.1.6                                ...           latest (4 years ago)

11 Versions

  • 0.1.6                                ...           4 years ago
  • 0.1.5                                ...           4 years ago
  • 0.1.4                                ...           4 years ago
  • 0.1.3                                ...           4 years ago
  • 0.1.2                                ...           4 years ago
  • 0.1.1                                ...           4 years ago
  • 0.1.0                                ...           4 years ago
  • 0.0.5                                ...           5 years ago
  • 0.0.4                                ...           5 years ago
  • 0.0.3                                ...           5 years ago
  • 0.0.1                                ...           5 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (3)
Dev Dependencies (5)

Copyright 2014 - 2016 © taobao.org |