Socket
Socket
Sign inDemoInstall

mongorito-tcomb

Package Overview
Dependencies
46
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    mongorito-tcomb

Bring schema validation to Mongorito thanks to tcomb


Version published
Weekly downloads
0
Maintainers
1
Created
Weekly downloads
 

Readme

Source

Mongorito Tcomb

Bring schema validation to Mongorito thanks to tcomb

Install

npm i -S mongorito-tcomb

Usage (ES6)

// 1. Import the dependencies
import co from 'co'
import Mongorito, {Model, t} from 'mongorito-tcomb'

// 2. Let's define some Model

class User extends Model {

  // We add the optional Schema
  get Schema() {
    return t.struct({
      name: t.unique(t.String),  // name is a required String and is unique
      surname: t.maybe(t.String) // surname is an optional String
    });
  }
}

class Post extends Model {

  get Schema() {
    return t.struct({
      title: t.String,
      content: t.String,
      author: t.ID(User) // Here we set the id of the author
    });
  }

}

co(function *(val) {

  // 3. Connect the database
  yield Mongorito.connect('localhost/mongo-tcomb-playground');


  // 4. Remove all users (for examples purpose)
  yield User.remove()

  // 5. Save a valid Model
  var valid = new User({name: 'Valid'});
  yield valid.save();

  // 6. Try to save an invalid Model
  var invalid = new User({name: 'Invalid', surname: 88});
  try {
    yield invalid.save();
  } catch (e) {
    console.log(e); // An exception is throw here
  }

  // 7. You can't create a new user with the same name
  var sameName = new User({name: 'Valid', surname: 'But not unique' });
  try {
    yield sameName.save();
  } catch (e) {
    console.log(e); // An exception is throw here
  }

  // 8. Let's now create a Post
  var post = new Post({
    title: 'Hello',
    content: 'Lorem Ipsum...',
    author: "" + valid.get('_id')
  });

  yield post.save();

  // 9. You can't save post with invalid IDs
  post.set('author', 'I want to be an ID...');

  try {
    yield post.save();
  } catch (e) {
    console.log(e); // An exception is throw here
  }


  // 10. And you can't save post with an ID which is not an User
  post.set('author', '' + post.get('_id'));

  try {
    yield post.save();
  } catch (e) {
    console.log(e); // An exception is throw here
  }

  // 11. Don't forget to disconnect Mongorito
  yield Mongorito.disconnect();
});

For coffeescript, you can see examples

API

Mixins

patch: (Model) -> PatchedModel

The patch function can be useful to combine different Mongorito plugins. It take a class, extend it then return the extended class.

Customs tcomb types

t.unique

It ensure that the type is unique in the database.
Usage: t.unique(T) where T is any tcomb type

t.ID

It represent the ID of an element in the database.
Usage: t.ID(M) where M is a Mongorito model
It ensure that ID is valid and exist in the database

TODOS

  • More human exceptions

Keywords

FAQs

Last updated on 10 Mar 2016

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc