
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
mongorito-tcomb
Advanced tools
npm i -S mongorito-tcomb
// 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
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.
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
FAQs
Bring schema validation to Mongorito thanks to tcomb
The npm package mongorito-tcomb receives a total of 0 weekly downloads. As such, mongorito-tcomb popularity was classified as not popular.
We found that mongorito-tcomb demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
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.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.