Socket
Socket
Sign inDemoInstall

mongorito-tcomb

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mongorito-tcomb - npm Package Compare versions

Comparing version 0.9.0 to 0.9.1

.codeclimate.yml

4

package.json
{
"name": "mongorito-tcomb",
"version": "0.9.0",
"version": "0.9.1",
"description": "Bring schema validation to Mongorito thanks to tcomb",

@@ -39,3 +39,3 @@ "main": "./lib/index.js",

"devDependencies": {
"ava": "^0.11.0",
"ava": "^0.12.0",
"co": "^4.6.0",

@@ -42,0 +42,0 @@ "coffee-script": "^1.10.0",

@@ -1,4 +0,24 @@

# mongorito-tcomb [![Build Status](https://travis-ci.org/xouabita/mongorito-tcomb.svg?branch=master)](https://travis-ci.org/xouabita/mongorito-tcomb) [![Dependency Status](https://david-dm.org/xouabita/mongorito-tcomb.svg)](https://david-dm.org/xouabita/mongorito-tcomb) [![devDependency Status](https://david-dm.org/alanshaw/david/dev-status.svg)](https://david-dm.org/alanshaw/david#info=devDependencies) [![Coverage Status](https://coveralls.io/repos/github/xouabita/mongorito-tcomb/badge.svg?branch=master)](https://coveralls.io/github/xouabita/mongorito-tcomb?branch=master)
Bring schema validation to Mongorito thanks to tcomb
<h1 align="center">Mongorito Tcomb</h1>
<p align="center">
<a href="https://travis-ci.org/xouabita/mongorito-tcomb">
<img src="https://travis-ci.org/xouabita/mongorito-tcomb.svg?branch=master" />
</a>
<a href="https://david-dm.org/xouabita/mongorito-tcomb">
<img src="https://david-dm.org/xouabita/mongorito-tcomb.svg" />
</a>
<a href="https://david-dm.org/xouabita/mongorito-tcomb/">
<img src="https://david-dm.org/xouabita/mongorito-tcomb/dev-status.svg"
</a>
<a href="https://coveralls.io/github/xouabita/mongorito-tcomb?branch=master">
<img src="https://coveralls.io/repos/github/xouabita/mongorito-tcomb/badge.svg?branch=master" />
</a>
<a href="https://codeclimate.com/github/xouabita/mongorito-tcomb">
<img src="https://codeclimate.com/github/xouabita/mongorito-tcomb/badges/gpa.svg" />
</a>
</p>
<h4 align="center"><i>Bring schema validation to Mongorito thanks to tcomb</i></h4>
---
Install

@@ -15,6 +35,6 @@ -------

import co from 'co'
import t from 'tcomb'
import Mongorito, {Model} from 'mongorito-tcomb'
import Mongorito, {Model, t} from 'mongorito-tcomb'
// 2. We define the model user
// 2. Let's define some Model
class User extends Model {

@@ -25,3 +45,3 @@

return t.struct({
name: t.String, // name is a required String
name: t.unique(t.String), // name is a required String and is unique
surname: t.maybe(t.String) // surname is an optional String

@@ -32,2 +52,14 @@ });

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) {

@@ -38,7 +70,11 @@

// 4. Save a valid Model
var valid = new User({name: "Valid"});
// 4. Remove all users (for examples purpose)
yield User.remove()
// 5. Save a valid Model
var valid = new User({name: 'Valid'});
yield valid.save();
// 5. Try to save an invalid Model
// 6. Try to save an invalid Model
var invalid = new User({name: 'Invalid', surname: 88});

@@ -51,8 +87,45 @@ try {

// 6. Don't forget to disconnect Mongorito
// 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 [`example.coffee`](https://github.com/xouabita/mongorito-tcomb/blob/master/example.coffee)
For **coffeescript**, you can see [`examples`](https://github.com/xouabita/mongorito-tcomb/blob/master/examples/)

@@ -62,19 +135,25 @@ API

### `patch: (Model) -> PatchedModel`
### 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
-----
- [x] Add t.ID for validating ID
- [x] Add t.unique for unique index creation
- [x] Add tests for t.unique
- [x] More efficient indexing
- [x] More efficient ID validation
- [x] Add tests for t.ID
- [x] Add example for t.unique
- [ ] Add example for t.ID
- [ ] Add docs for t.ID/t.unique
- [ ] Find recursively t.ID/t.unique
- [ ] More human exceptions
SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc