npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mongo-uri-builder

v4.0.0

Published

A module to easily create mongodb connection strings using configuration objects

Downloads

12,101

Readme

mongo-uri-builder

A zero dependency Node.js module to easily create MongoDB connection strings using configuration objects

Tests npm version codecov

NPM

Rationale

Most of the existing MongoDB libraries (e.g. the official MongoClient or Mongoose) uses connection strings to connect to your running mongo instances which most of the times is very quick and convenient. Anyway sometime you want to have your MongoDB connection details organized in a nice javascript object so that you can easily serialize it in a configuration file and be able to override some specific values in different environments (e.g. "development" or "production") without having to override the entire connection string.

With this module you can easily accomplish this goal and in general you will be able to easily generate a MongoDB connection string starting from an organized javascript object that you can manipulate as you wish.

Quick example

var mongoUriBuilder = require('mongo-uri-builder');

var connectionString = mongoUriBuilder({
	username: 'user', // or user: 'user'
	password: 'pass',
	host: 'host1',
	port: 1111,
	replicas: [
		{host: 'host2', port: 2222},
		{host: 'host3', port: 3333}
	],
	database: 'db',
	options: {
		w: 0,
		readPreference: 'secondary'
	}
});

console.log(connectionString); 

// prints "mongodb://user:pass@host1:1111,host2:2222,host3:3333/db?w=0&readPreference=secondary"

Install

As easy as running:

npm install --save mongo-uri-builder

Requires Node.js 8+

Usage

As shown in the previous example the module exposes just a function that accepts an optional structured object as parameter. If no parameter is given the default MongoDB://localhost will be built.

Available options:

All the options are optional and the following example describes all the available ones:

{
	username: 'user', // the username
	// user: 'user', // this is alternative of username
	password: 'pass', // the password
	host: 'host1', // the main host (default: "localhost")
	port: 1111, // the main port
	replicas: [ // an array of replica databases
		{host: 'host2', port: 2222}, // every replica must define an host, the port is optional
		{host: 'host3', port: 3333}
	],
	database: 'db', // the name of the database
	options: { // an arbitrary object of connection options
		w: 0,
		readPreference: 'secondary'
	}
}

Contributing

Everyone is very welcome to contribute to this project. You can contribute just by submitting bugs or suggesting improvements by opening an issue on GitHub.

You can also submit PRs as long as you adhere with the code standards and write tests for the proposed changes.

Code standard

XO conventions and tools are used as code standard. You can easily check if your edits conforms the standard by running:

npm run check-style

Tests

Tape is used as default test runner. You can easily run the tests by using:

npm run tests

Coverage

Covert can be used to check tests coverage by running:

npm run coverage

License

Licensed under MIT License. © Luciano Mammino.