Skip to content

Getting Started

Installation:

bash
npm install mongodash

Initialization

typescript
import mongodash from 'mongodash';

await mongodash.init({
    uri: 'mongodb://mongodb0.example.com:27017/myDatabase' 
});

See more initialization options here.


Reactive Tasks

typescript
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

typescript
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

typescript
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

typescript
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

typescript
import { getCollection } from 'mongodash';

const myCollection = getCollection('myCollectionName');

See detailed description here.


getMongoClient

typescript
import { getMongoClient } from 'mongodash';

const mongoClient = getMongoClient();

See detailed description here.