JSPM

  • Created
  • Published
  • Downloads 1345
  • Score
    100M100P100Q112693F
  • License MIT

RethinkDB ORM for Node.js

Package Exports

  • thinky
  • thinky/lib/document
  • thinky/lib/errors
  • thinky/lib/type

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (thinky) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Thinky

=============================== Wercker status Light Node.js ORM for RethinkDB.

Quick start

Install:

npm install thinky

Use:

var thinky = require('thinky')();
var type   = thinky.type;

// Create a model - the table is automatically created
var Post = thinky.createModel("Post", {
  id: String,
  title: String,
  content: String,
  idAuthor: String
}); 

// You can also add constraints on the schema
var Author = thinky.createModel("Author", {
  id: type.string(),      // a normal string
  name: type.string().min(2),  // a string of at least two characters
  email: type.string().email()  // a string that is a valid email
});

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

Save a new post with its author.

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

// Create a new author
var author = new Author({
  name: "Michel",
  email: "orphee@gmail.com"
});

// Join the documents
post.author = author;


post.saveAll().then(function(result) {
  /*
  post = result = {
    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: "Michel",
      email: "orphee@gmail.com"
    }
  }
  */
});

Retrieve the post with its author.

Post.get("0e4a6f6f-cc0c-4aa5-951a-fcfc480dd05a").getJoin().run().then(function(result) {
  /*
  result = {
    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: "Michel",
      email: "orphee@gmail.com"
    }
  }
  */
});

Documentation

https://thinky.io

Help

No SLA, but a few developers hang out there and may be able to help:

Run the tests

npm test

Contribute

You are welcome to do a pull request.

Roadmap

The roadmap is defined with the issues/feedback on GitHub. Checkout:
https://github.com/neumino/thinky/issues

Author

Contributors

License

MIT, see the LICENSE file