1.0.0 • Published 4 years ago

@omegalabs/repo-mongodb v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

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.

optiontypedescription
datasourceConfigobjectConfiguration options for the datasource.
Datasource Configuration
optiontypedefaultdescription
databaseHoststringmongo_dbHostname to connect to the database.
datatbaseUsernamestringrootUsername to connect to the database.
databasePasswordstringrootPassword to connect to the database.
databasePortinteger27017Port 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.

optiontypedefaultdescription
useNewUrlParserbooleantrueSee mongodb docs: https://mongoosejs.com/docs/deprecations.html
autoReconnectbooleantrueReconnect on error.
reconnectTriesinteger60Server attempt to reconnect #times
reconnectIntervalinteger25000Server will wait # milliseconds between retries.
retryWritebooleanfalseSee mongodb docs: https://docs.mongodb.com/manual/core/retryable-writes/
sslbooleantrue disabledUse ssl connection (needs to have a mongod server with ssl support)
sslValidatebooleantrue disabledValidate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher)
useUnifiedTopologybooleanfalseSee mongodb docs.