@mimik/mongooser
v4.2.1
Published
Helper for setting up mongodb using mongoose for mimik microservices
Readme
mongooser
Example
import mongodb from '@mimik/mongooser';- mongooser
- module.exports(config) ⇒ object ⏏
- async
- ~validate() ⇒ Promise
- sync
- ~getKMSProviders() ⇒ object
- ~initializeSync() ⇒ object
- ~replicaSet() ⇒ boolean
- async
- module.exports(config) ⇒ object ⏏
module.exports(config) ⇒ object ⏏
Creates a MongoDB connection manager for mimik microservices.
Kind: Exported function
Returns: object - Object with methods: initializeSync, validate, replicaSet, getKMSProviders.
| Param | Type | Description |
| --- | --- | --- |
| config | object | Service configuration object. |
| config.mongoSettings | object | MongoDB connection settings. |
| config.mongoSettings.url | string | MongoDB connection URL. |
| config.mongoSettings.options | object | Mongoose connection options. Must include heartbeatFrequencyMS. |
| [config.mongoSettings.password] | string | MongoDB password (masked in production logs). |
| config.mongoSettings.reconnectOffset | number | Reconnect offset in seconds. |
| config.mongoSettings.connectTimeout | number | Connection timeout in seconds. |
| config.mongoSettings.validationCheck | number | Validation check delay in milliseconds. |
| config.nodeEnvironment | string | Current node environment (e.g. 'production'). |
| [config.encryption] | object | Encryption settings for client-side field level encryption. |
| [config.encryption.set] | string | Set to 'on' to enable auto-encryption. |
| [config.encryption.kmsProvider] | string | KMS provider type ('local' or 'aws'). |
| [config.encryption.localMasterKey] | string | Base64-encoded local master key. |
| [config.encryption.aws] | object | AWS KMS provider settings. |
| [config.encryption.database] | string | Database name for key vault. |
| [config.encryption.keyVaultTable] | string | Collection name for key vault. |
| [config.encryption.cryptSharedLibPath] | string | Absolute path to the crypt_shared library (.dylib/.so/.dll). When set, uses crypt_shared instead of mongocryptd and sets cryptSharedLibRequired: true so mongocryptd is never spawned. Download from https://www.mongodb.com/try/download/enterprise |
| [config.encryption.mongocryptdURI] | string | URI of a remote mongocryptd process (e.g. Atlas-hosted). When set, the driver connects to this URI instead of spawning a local mongocryptd. Takes precedence over cryptSharedLibPath. |
module.exports~validate() ⇒ Promise
Database connection validation.
Kind: inner method of module.exports
Returns: Promise - Resolves to null on success.
Category: async
Throws:
- Error Will throw an error if the database connection is not
connected.
Will exit 1 if the connection request times out and the connection state is not connected.
Requires: module:@mimik/sumologic-winston-logger
module.exports~getKMSProviders() ⇒ object
AutoEncryption KMSProvider.
Kind: inner method of module.exports
Returns: object - The KMSProviders object.
Will return the kmsProvider settings for the service.
Requires config.encryption to be provided to the factory.
Only local and aws providers are supported.
Category: sync
Throws:
- TypeError If encryption config (or its
kmsProvider) was not provided to the factory. - Error If
kmsProvideris neitherlocalnoraws.
module.exports~initializeSync() ⇒ object
Database initialization.
Kind: inner method of module.exports
Returns: object - The mongoose database object. Connection is established asynchronously in the background.
When encryption is enabled, configures auto-encryption by setting keyVaultNamespace, kmsProviders,
and optionally extraOptions.cryptSharedLibPath on the mongoose connection options.
When config.encryption.mongocryptdURI is set, the driver connects to that remote mongocryptd (e.g. Atlas-hosted)
and bypasses local auto-spawn. When config.encryption.cryptSharedLibPath is set instead, crypt_shared is used
(no separate process required). mongocryptdURI takes precedence over cryptSharedLibPath if both are set.
Without either, the driver falls back to spawning mongocryptd at localhost:27020 (requires MongoDB Enterprise).
Note: ClientEncryption for explicit encryption should be imported from mongodb, not mongodb-client-encryption.
Will exit 1 if the connection request generates an error or the connection state is disconnected or disconnecting.
Category: sync
Requires: module:@mimik/sumologic-winston-logger
module.exports~replicaSet() ⇒ boolean
Indicates whether the connection uses a replica set.
Kind: inner method of module.exports
Returns: boolean - True if a replica set is configured, False if not (or if no connection exists yet).
Category: sync
