MongoError: не авторизован для запроса

У меня есть небольшое приложение Node.js / Express / Mongoose, которое я запускаю на экземпляре AWS - EC2, созданном с использованием Bitnami AMI, всякий раз, когда я пытаюсь запустить .find в коллекции MongoDB моего приложения с помощью Chrome Postman, я получаю следующий результат.

{
    "name": "MongoError"
}

[MongoError: not authorized for query on projectDB.areas]

Я попытался использовать следующие 3 строки подключения, но все 3 вернули один и тот же результат, может ли кто-нибудь помочь, сообщив мне, что я здесь упускаю / делаю неправильно? Спасибо

var connectionString = 'mongodb://localhost:27017/'+dbName;
var connectionString = 'mongodb://root:bitnami@localhost:27017/'+dbName;
var connectionString = 'mongodb://root@localhost:27017/'+dbName;

Мой код приложения node.js:

area.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var areaSchema = new Schema({
    name: { type: String, required: true },
});
module.exports = mongoose.model('Area', areaSchema);

area.js

var Area = require('../app/models/area');
var express = require('express');
var router = express.Router();
router.route('/').get(function(req, res){
   Area.find(function(err, areas){
        if(err){
            return res.send(err);
        }
        res.json(areas);
        //res.send({sucess:true, areas:areas})
    });
});

app.js

var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var areas = require('./routes/areas');

var app = express();
app.set('port', process.env.PORT || 8080);
app.use(bodyParser.json({ type: 'application/*+json' }));
var dbName = 'projectDB';
var connectionString = 'mongodb://localhost:27017/'+dbName;
// var connectionString = 'mongodb://root:bitnami@localhost:27017/'+dbName;
// var connectionString = 'mongodb://root@localhost:27017/'+dbName;
////////Tried the above 3 connection strings, none worked...
mongoose.connect(connectionString, function(err){
  if(err){
    throw err;
  }
});

var corsOptions = {
  origin: '*',
  allowedHeaders: ['Content-Type'],
  methods: ['POST','GET','PUT','DELETE'],
  credentials: true
};
app.use(cors(corsOptions));
app.use('/api/areas', areas);
module.exports = app;

www.js

var app = require('../app');
var server = app.listen(app.get('port'), function(){
    console.log('Server running on port: '+ server.address().port);
});

person MChan    schedule 16.12.2014    source источник
comment
@JohnnyHK Опубликовано, спасибо   -  person MChan    schedule 16.12.2014
comment
Вы попадете в оболочку монго, если сделаете $ mongo admin --username root --password bitnami?   -  person Rahat Mahbub    schedule 17.12.2014
comment
И еще кое-что: mongoose.connect("mongodb://root@localhost:27017/projectDB"); var db = mongoose.connection; db.once('open', function () { console.log('MongoDB connection successful.'); }); Вы получили сообщение об успехе?   -  person Rahat Mahbub    schedule 17.12.2014
comment
@RahatMahbub mongo admin --username .... не разрешает вход, нет, я не вижу сообщения   -  person MChan    schedule 18.12.2014


Ответы (1)


Поскольку запуск $ mongo admin --username root --password bitnami не привел вас в оболочку Mongo.

Предполагая, что вы запускали этот код на сервере, а не на своем локальном компьютере, это означает, что ваш MongoDB не был правильно настроен. Вероятно, вам следует полностью удалить экземпляр из AWS и начать настройку с нуля. В противном случае просто следуйте инструкциям на веб-сайте MongoDB, чтобы установить MongoDB.

Кроме того, для Node.js используйте следующий код, чтобы убедиться, что вы действительно подключились:

`

mongoose.connect("mongodb://root@localhost:27017/projectDB");
var db = mongoose.connection;
db.once('open', function () {
console.log('MongoDB connection successful.');
});

`

person Rahat Mahbub    schedule 18.12.2014