0.1.6 • Published 10 years ago

thinkagain v0.1.6

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

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.
0.1.6

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.1

10 years ago