@omegalabs/repo-mongodb

An MongoDb implementation for the Repository pattern for data persistence.

Usage no npm install needed!

<script type="module">
  import omegalabsRepoMongodb from 'https://cdn.skypack.dev/@omegalabs/repo-mongodb';
</script>

README

Mongo Repository

This module is intended for use with the @omegalabs/repo-core package. When used with the repo-core package this module provides an implementation of the repo-core interface for a MongoDB database.

Installation and Use

  1. Do an npm install @omegalabs/repo-mongodb (shortened asrepo-mongodb below) to install the package on your local machine.
  2. Require the package in your project along with the @omegalabs/repo-core package.
  3. Instantiate the repo-mongodb package with options (see Configuration Options below.)
  4. Instantiate the repo-core package, providing the repo-mongodb package as an argument.

For detailed explanation of the API see the repository-core documentation.

Tests

Note: Both Docker and Docker Compose are required to run the unit tests for the Monog Repository.

Run the unit tests for repo-mongodb with the npm test command.

The test suite will produce a report afer the test run is complete.

Example Usage

const config = {
    datasourceConfig: {
        databaseHost: 'mongo_db',
        databasePassword: 'root',
        databaseUsername: 'root',
        databaseName: 'my_database'
    }
};
const mongoRepo = require('@seanttaylor/omega-repo-mongo)(config);
const Repository = require('@seanttaylor/omega-repository-core)
const beerRepo = Repository(jsonRepo);
const beer = {
    name: 'Indiana Pale Ale',
    kind: 'ale'
}

const result = await beerRepo.add(beer, 'beers_collection');
/*{
    error: null,
    status: 'ok',
    data: [
        {
            _id: '5e2f99c9fa38672ff424622b'
            name: 'Indiana Pale Ale',
            kind: 'ale',
            _createdAt: '2020-01-28T02:19:33Z'
        }
    ]
}*/

const searchResult = await beerRepo.findOne('5e2f99c9fa38672ff424622b', 'beers_table);
/*
    Same output as above.
*/

Configuration Options

Fields and acceptable values for the options object of repo-mongodb.

option type description
datasourceConfig object Configuration options for the datasource.
Datasource Configuration
option type default description
databaseHost string mongo_db Hostname to connect to the database.
datatbaseUsername string root Username to connect to the database.
databasePassword string root Password to connect to the database.
databasePort integer 27017 Port to connect to the database.
Additional MongoDB Configuration

Below are additional options that may be included on the repo configuration object, outside the datasourceConfig object. See the MongoDB documentation for more information on available options.

option type default description
useNewUrlParser boolean true See mongodb docs: https://mongoosejs.com/docs/deprecations.html
autoReconnect boolean true Reconnect on error.
reconnectTries integer 60 Server attempt to reconnect #times
reconnectInterval integer 25000 Server will wait # milliseconds between retries.
retryWrite boolean false See mongodb docs: https://docs.mongodb.com/manual/core/retryable-writes/
ssl boolean true [disabled] Use ssl connection (needs to have a mongod server with ssl support)
sslValidate boolean true [disabled] Validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher)
useUnifiedTopology boolean false See mongodb docs.