mongodb-constr
TypeScript icon, indicating that this package has built-in type declarations

4.0.6 • Public • Published

mongodb-constr

npm version Build Status

NPM

A simple mongo db connections string builder for NodeJS using the fluid builder pattern

Contents

The current implementation supports MongoDb driver 3.4 and 3.6

Custom models:

IMongoUrl:

interface IMongoUrl {
  host: string;
  port: number;
  toString(usePort?: boolean): string;
  equals(obj: IMongoUrl): boolean;
}

IConnectionStringSettings:

interface IConnectionStringSettings {
  username: string | undefined;
  password: string | undefined;
  url: IMongoUrl | undefined;
  replicas: IMongoUrl[] | undefined;
  database: string | undefined;
  options: URLSearchParams | undefined;
}

MongoDbVersion:

enum MongoDbVersion {
  VERSION_34 = "VERSION_34",
  VERSION_36 = "VERSION_36"
}

Builder interface IConnectionStringBuilder

interface IConnectionStringBuilder {
  getSettings(): IConnectionStringSettings;
  withOptions(options: any): IConnectionStringBuilder;
  withCredentials(username: string, password: string): IConnectionStringBuilder;
  withUrl(url: IMongoUrl): IConnectionStringBuilder;
  withReplicas(urls: IMongoUrl[]): IConnectionStringBuilder;
  withDatabase(database: string): IConnectionStringBuilder;
  build(): string;
}

The module exports an object:

const MongoConStr: {
  create: (settings: IConnectionStringSettings, version?: MongoDbVersion) => string;
  builder: (version?: MongoDbVersion) => IConnectionStringBuilder;
};
  • builder returns an empty IConnectionStringBuilder to be used
    • defaults to MongoDbVersion.VERSION_36
  • create takes a IConnectionStringSettings object, creates a ConnectionStringBuilder based on the settings, builds the connection string, and returns it,
    • defaults to MongoDbVersion.VERSION_36

Exammples:

const { MongoConStr, MongoDbVersion } = require('./lib/index');

const conStr = MongoConStr.builder(MongoDbVersion.VERSION_34)
  .withCredentials("asdf", "1234")
  .withDatabase("my-database")
  .withUrl({host: 'host1', port: 7777})
  .withReplicas([
    {host: 'host2', port: 7878},
    {host: 'host3', port: 9887}
  ])
  .withOptions({
    option1: 'value1',
    option2: 'value2',
    option3: 'value3'
  })
  .build();

console.log(conStr);
// should output: mongodb://asdf:1234@host1:7777,host2:7878,host3:9887/my-database?option1=value1&option2=value2&option3=value3

const conStrSettings = MongoConStr.create({
  username: 'myusername',
  password: 'mysecretp@a$4w0rd',
  database: 'awesomeDb',
  url: {
    host: 'host',
    port: 2018,
  },
  replicas: [
    {
      host: 'host2',
      port: 2019
    },
    {
      host: 'host3',
      port: 2020
    }
  ],
  options: {
    option1: 'value1',
    option2: 'value2',
    option3: 'value3'
  }
});

console.log(conStrSettings);
// should output: mongodb+srv://myusername:mysecretp@a$4w0rd@new-srv-host.mongodb_url_host.com/awesomeDb?option1=value1&option2=value2&option3=value3

console.log(MongoConStr.builder(MongoDbVersion.VERSION_34).withCredentials('me').withReplicas([{host:'h1', port:1}]).build());
// should output: mongodb://me@h1:1

Instalation

yarn add mongodb-constr
# or
npm install mongodb-constr

Package Sidebar

Install

npm i mongodb-constr

Weekly Downloads

6

Version

4.0.6

License

MIT

Unpacked Size

22.7 kB

Total Files

23

Last publish

Collaborators

  • andreilucaci