@omegalabs/repo-mongodb
v1.0.0
Published
An MongoDb implementation for the Repository pattern for data persistence.
Downloads
3
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. |