===============================
Light Node.js ORM for RethinkDB.
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: "[email protected]"
});
// 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: "[email protected]"
}
}
*/
});
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: "[email protected]"
}
}
*/
});
No SLA, but a few developers hang out there and may be able to help:
- irc://irc.freenode.org/rethinkdb
- https://gitter.im/neumino/thinky
npm test
You are welcome to do a pull request.
The roadmap is defined with the issues/feedback on GitHub. Checkout:
https://github.com/neumino/thinky/issues
- Michel Tu -- [email protected] -- blog -- twitter
- chrisfosterelli
- colprog
- dulichan
- flienteen
- marshall007
- mindjuice
- Morhaus
- primitive-type
- nikaspran
- rasapetter
- simonratner
- wezs
MIT, see the LICENSE file