New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

mongorito

Package Overview
Dependencies
Maintainers
1
Versions
50
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mongorito

ES6 generator-based MongoDB ODM. It rocks.

  • 2.1.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
104
decreased by-18.11%
Maintainers
1
Weekly downloads
 
Created
Source

Mongorito

Build Status Coverage Status

Awesome MongoDB ODM for Node.js apps. Just take a look at its beautiful models and API.

Uses official mongodb driver under the hood.




Quick overview

const mongorito = require('mongorito');
const Model = mongorito.Model;

class Post extends Model {
	
}

mongorito.connect('localhost/blog');

let post = new Post({
	title: 'Steve Angello rocks',
	author: {
		name: 'Emma'
	}
});

post.save();
// post saved

Features

  • Based on Promises, which means no callbacks
  • Established API you've already used to
  • Hooks (before:save, around:create, after:remove, etc)
  • Fully covered by tests
  • Using this module results in a beautiful code

Installation

$ npm install mongorito --save

Usage

Connection

Check out connection example.

Here's how to connect to a blog database on localhost:

await mongorito.connect('localhost/blog');

To disconnect, use mongorito.disconnect():

await mongorito.disconnect();

Models

Use classes to define models:

const Model = mongorito.Model;

class Post extends Model {
	
}

This defines model Post with documents in posts collection. To use a custom collection, add collection() method, which returns the name of the desired collection:

class Post extends Model {
	collection () {
		return 'super_cool_posts';
	}
}

Mongorito models can also be defined old-fashioned Backbone way:

const Post = Model.extend({
	collection: 'posts'
});

Note: collection property has to be set.

Attributes

Check out attributes example.

To create a new instance of a model, simply use new:

let post = new Post({
	title: 'Great title',
	author: {
		name: 'Emma'
	}
});

To retrieve a specific attribute (even a nested one):

let title = post.get('title');
let author = post.get('author.name');

All attributes can be retrieved at once using either toJSON() or get():

let attrs = post.toJSON();
let attrs = post.get();

Set new values via set() method:

post.set('title', 'New title');
post.set('author.name', 'Rachel');

Save & Remove

Check out manage example.

Use a save() method to create/update (Mongorito handles that for you) a model:

let post = new Post();

await post.save(); // creates a new post

post.set('title', 'New title');
await post.save(); // updates an existing post

To remove a model from collection:

await post.remove();

You can also remove all models matching a certain criteria:

await Post.remove({ title: 'New title' });

Queries

Find all

To fetch all models find() or all() can be used (they're identical):

Post.find();
Post.all();
Find one
Post.findOne({ title: 'New title' });
Find by ID
Post.findById('56c9e0922cc9215110ab26dc');
Find where value equals
Post.where('title', 'New title').find();
Post.where('author.name', 'Emma').find();
Find where value matches a regular expression
Post.where('title', /something/i).find();
Find where attribute exists
Post.exists('title').find();
Find where value is less/greater than
Post.where('comments_number').lt(5).find(); // less than 5
Post.where('comments_number').lte(5).find(); // less than or equal 5
Post.where('comments_number').gt(5).find(); // greater than 5
Post.where('comments_number').gte(5).find(); // greater than or equal 5

Find where value is one of

Post.in('comments_number', [4, 8]).find();
Find using OR

Find all models where title equals either "First" or "Second":

Post.or({ title: 'First' }, { title: 'Second' }).find();
Limit results
Post.limit(10).find();
Skip results

Skip first N results:

Post.skip(4).find();
Sort results
// descending
Post.sort('comments_number', -1);

// ascending
Post.sort('comments_number', 1);
Count results

Count all documents in collection:

Post.count();

Count all documents matching a certain criteria:

Post.count({ awesome: true });

Tests

$ npm test

License

Mongorito is released under the MIT License.

Keywords

FAQs

Package last updated on 26 May 2016

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc