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%3D@localhost: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.