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
- Do an
npm install @omegalabs/repo-mongodb
(shortened asrepo-mongodb
below) to install the package on your local machine. - Require the package in your project along with the
@omegalabs/repo-core
package. - Instantiate the
repo-mongodb
package with options (see Configuration Options below.) - Instantiate the
repo-core
package, providing therepo-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. |