dragonroll/backend/node_modules/mongodb-uri/README.md

125 lines
3.3 KiB
Markdown

# mongodb-uri
Parse and format MongoDB URIs of the form:
```
mongodb://[username[:password]@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database]][?options]
```
Note that there are two minor differences between this format and the
[standard MongoDB connect string URI format](http://docs.mongodb.org/manual/reference/connection-string/):
1. `password` is optional even when a `username` is supplied
2. The slash before the `database` is not required when leaving out the `database` but specifying `options`
Neither of these differences should prevent this library from parsing any URI conforming to the standard format.
## Usage
### parse
Takes a URI string and returns a URI object of the form:
```
{
scheme: !String,
username: String=,
password: String=,
hosts: [ { host: !String, port: Number= }, ... ],
database: String=,
options: Object=
}
```
`scheme` and `hosts` will always be present. Other fields will only be present in the result if they were present in the
input.
#### Example
```javascript
var mongodbUri = require('mongodb-uri');
var uri = 'mongodb://user%3An%40me:p%40ssword@host:1234/d%40tabase?authSource=%40dmin';
var uriObject = mongodbUri.parse(uri);
console.log(JSON.stringify(uriObject, null, 2));
```
```
{
"scheme": "mongodb",
"hosts": [
{
"host": "host",
"port": 1234
}
],
"username": "user:n@me",
"password": "p@ssword",
"options": {
"authSource": "@dmin"
},
"database": "d@tabase"
}
```
### format
Takes a URI object and returns a URI string.
#### Example
```javascript
var mongodbUri = require('mongodb-uri');
var uri = mongodbUri.format(
{
username: 'user:n@me',
password: 'p@ssword',
hosts: [
{
host: 'host',
port: 1234
}
],
database: 'd@tabase',
options: {
authSource: '@dmin'
}
}
);
console.log(uri);
```
```
mongodb://user%3An%40me:p%40ssword@host:1234/d%40tabase?authSource=%40dmin
```
### formatMongoose
Takes either a URI object or string and returns a Mongoose connection string. Specifically, instead of listing all hosts
and ports in a single URI, a Mongoose connection string contains a list of URIs each with a single host and port pair.
Useful in environments where a MongoDB URI environment variable is provided, but needs to be programmatically
transformed into a string digestible by [mongoose.connect()](http://mongoosejs.com/docs/connections.html)--for example,
when deploying to a [PaaS like Heroku using a MongoDB add-on like MongoLab](https://devcenter.heroku.com/articles/mongolab).
#### Example
```javascript
var mongoose = require('mongoose');
var mongodbUri = require('mongodb-uri');
// A MongoDB URI, not compatible with Mongoose because it lists multiple hosts in the address
// Could be pulled from an environment variable or config file
var uri = 'mongodb://username:password@host1:1234,host2:5678/database';
// Reformat to a Mongoose connect string and connect()
var mongooseConnectString = mongodbUri.formatMongoose(uri);
mongoose.connect(mongooseConnectString);
// Test for connection success
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'Connection error: '));
db.once('open', function callback () {
console.log('Successfully connected to MongoDB');
});
```