Node Mongo is reactive extension to MongoDB API. It provides few usability improvements to the monk API.
- ️️Reactive. Fires events as document stored, updated or deleted from database
- Paging. Implements high level paging API
- Schema validation. Validates your data before save
npm i @paralect/node-mongo
const connectionString = 'mongodb://localhost:27017/home-db';
const db = require('@paralect/node-mongo').connect(connectionString);
// create a service to work with specific database collection
const userService = db.createService('users');
// create documents
const users = await userService.create([
{ name: 'Alex' },
{ name: 'Bob' },
]);
// find one document
const user = await userService.findOne({ name: 'Bob' });
// find many documents with pagination
const {results, pagesCount, count } = await userService.find(
{ name: 'Bob' },
{ page: 1, perPage: 30 },
);
// update document
const updatedUser = await userService.updateOne(
{ _id: '1' },
(doc) => ({ ...doc, name: 'Alex' }),
);
// remove document
const removedUser = await userService.remove({ _id: '1' });
const userService = db.createService('users');
userService.on('created', ({ doc }) => {
});
userService.on('updated', ({ doc, prevDoc }) => {
});
userService.onPropertiesUpdated(['email'], ({ doc, prevDoc }) => {
});
userService.on('removed', ({ doc }) => {
});
const Joi = require('Joi');
const userSchema = Joi.object({
_id: Joi.string(),
createdOn: Joi.date(),
name: Joi.string(),
status: Joi.string().valid('active', 'inactive'),
});
function validate(obj) {
return userSchema.validate(obj);
}
const userService = db.createService('users', { validate });
This project adheres to Semantic Versioning.
Every release is documented on the Github Releases page.