mongodash
v2.1.0
Published
An utility library delivering super-useful and super-simple tools using MongoDB
Maintainers
Readme
A modern JavaScript & Typescript MongoDB-based utility library. Includes Reactive Tasks, Cron Tasks, Distributed Locks, Transactions, and a Dashboard.
See full documentation here
Installation:
npm install mongodashInitialization
import mongodash from 'mongodash';
await mongodash.init({
uri: 'mongodb://mongodb0.example.com:27017/myDatabase'
});See more initialization options here.
Reactive Tasks
import { reactiveTask } from 'mongodash';
// Trigger a task when a user is updated
await reactiveTask({
task: 'on-user-update',
collection: 'users',
handler: async (doc) => {
console.log('User changed:', doc._id);
}
});See detailed description here.
cronTask
import { cronTask } from 'mongodash';
await cronTask('my-task-id', '5m 20s', async () => {
console.log('Hurray the task is running!');
});See detailed description and more cron tasks methods here.
withLock
import { withLock } from 'mongodash';
await withLock('my-lock-id', async () => {
// it is quaranteed this callback will never run in parallel,
// so all race-conditions are solved
const data = await loadFromDatabase();
data.counter += 1;
await saveToDatabase(data);
});See detailed description here.
withTransaction
import { withTransaction, getCollection } from 'mongodash';
const createdDocuments = await withTransaction(async (session) => {
const myDocument1 = { value: 1 };
const myDocument2 = { value: 2 };
const collection = getCollection('myCollection');
await collection.insertOne(myDocument1, { session });
await collection.insertOne(myDocument2, { session });
return [myDocument1, myDocument2];
});See detailed description here.
getCollection
import { getCollection } from 'mongodash';
const myCollection = getCollection('myCollectionName');See detailed description here.
getMongoClient
import { getMongoClient } from 'mongodash';
const mongoClient = getMongoClient();See detailed description here.
