Error connecting to Azure: Illegal character in password with mongoose 5.0.1 but works in 4.13.9

For the latest version (v5.0.1) of Mongoose, you'll need to use this syntax to connect to MongoDB like this:

const mongoose = require('mongoose');

mongoose.connect('mongodb://<cosmosdb-username>.documents.azure.com:10255/<databasename>?ssl=true', {
    auth: {
      user: '<cosmosdb-username>',
      password: '<cosmosdb-password>'
    }
  })
  .then(() => console.log('connection successful'))
  .catch((err) => console.error(err));

The password for the Azure Cosmos DB instance I got ended with ==, hence the illegal characters message. These characters must be urlencoded.

An equals sign = urlencoded is %3D.

A properly encoded connection string for the password jitsu== could look like mongodb://user:jitsu%3D%[email protected]:27017/dbname?ssl=false.

Also be aware that the connection strings you get from the Cosmos DB blade in the Azure Portal doesn't include the database name.