1

I'm using Node.Js, Expressjs, mLab (to host my database) and mongoDB

Im getting an error of not being Authorized on Streetinform(my DB name) to execute command. {listIndexes: "sessions", cursor: {}}

this is the error.

enter image description here

this is how I connect to my Database

var dbHost = process.env.DB_HOST || 'localhost';
var dbPort = process.env.DB_PORT ||  3002;
var dbName = process.env.DB_NAME || 'Mongodb';

var dbURL = 'mongodb://'+dbHost+':'+dbPort+'/'+dbName;

if (app.get('env') == 'development'){
// prepend url with authentication credentials // 
    dbURL = 'mongodb://'+process.env.DB_USER+':'+process.env.DB_PASS+'@'+dbHost+':'+dbPort+'/'+dbName;
}

app.use(session({
    secret: 'secret',
    proxy: true,
    resave: true,
    saveUninitialized: true,
    store: new MongoStore({ url: dbURL })
    })
);

this is my library

var http = require('http');
var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var errorHandler = require('errorhandler');
var cookieParser = require('cookie-parser');
var MongoStore = require('connect-mongo')(session);
var dotenv = require('dotenv')
dotenv.load();
var app = express();

Establish Connection to Database

var crypto      = require('crypto');
var MongoDB     = require('mongodb').Db;
var Server      = require('mongodb').Server;
var moment      = require('moment');

/*
    ESTABLISH DATABASE CONNECTION
*/

var dbName = process.env.DB_NAME || 'mongodb';
var dbHost = process.env.DB_HOST || 'localhost'
var dbPort = process.env.DB_PORT || 3002;

var db = new MongoDB(dbName, new Server(dbHost, dbPort, {autoReconnect: true}), {w: 1});
db.open(function(err, d){
    if (err) {
        console.log(err);
    } else {
        if (process.env.NODE_ENV == 'live') {
            db.authenticate(process.env.DB_USER, process.env.DB_PASS, function(e, res) {
                if (e) {
                    console.log('mongo :: error: not authenticated', e);
                }
                else {
                    console.log('mongo :: authenticated and connected to database :: "'+dbName+'"');
                }
            });
        }   else{
            console.log('mongo :: connected to database :: "'+dbName+'"');
        }
    }
});
Sean Reyes
  • 1,636
  • 11
  • 19

1 Answers1

0

I to use mLabs to, it appears that you have not created a database uses due to which it cannot execute any commands.

You can enable it using the following steps:

  1. Go to https://mlab.com/home
  2. Click on the database which you are using from the Development and Utility
  3. Click on the Users tab
  4. Click the Add database user button
  5. Enter you desired credentials

So now when you are authenticating pass in the username and password that you have entered in step 5