1

我正在使用 Node.Js、Expressjs、mLab(托管我的数据库)和 mongoDB

我收到未在 Streetinform(我的数据库名称)上授权执行命令的错误。{listIndexes:“会话”,光标:{}}

这是错误。

在此处输入图像描述

这就是我连接到我的数据库的方式

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 })
    })
);

这是我的图书馆

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();

建立与数据库的连接

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+'"');
        }
    }
});
4

1 回答 1

0

我要使用 mLabs,看来您还没有创建数据库使用,因此它无法执行任何命令。

您可以使用以下步骤启用它:

  1. 转到https://mlab.com/home
  2. 从开发和实用程序中单击您正在使用的数据库
  3. 单击“用户”选项卡
  4. 单击添加数据库用户按钮
  5. 输入您想要的凭据

因此,现在当您进行身份验证时,请输入您在第 5 步中输入的用户名和密码

于 2017-03-02T10:21:06.790 回答