簡體   English   中英

MongoError:未經授權進行查詢

[英]MongoError: not authorized for query

我有一個小的Node.js / Express / Mongoose應用程序,它在使用Bitnami AMI構建的AWS-EC2實例上運行,每當我嘗試使用Chrome Postman在我的應用程序MongoDB集合上運行.find時,我都會得到以下結果。

{
    "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);

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

由於運行$ mongo admin --username root --password bitnami並沒有帶您進入Mongo shell。

假設您在服務器而不是本地計算機上運行了該代碼,這僅意味着尚未正確設置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.');
});

`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM