【问题标题】:MongoError: not authorized for queryMongoError:未授权查询
【发布时间】:2015-02-14 05:38:35
【问题描述】:

我有一个小型 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);
});

【问题讨论】:

  • @JohnnyHK 已发表,谢谢
  • 如果你这样做了$ mongo admin --username root --password bitnami,你会进入mongo shell吗?
  • 另外,还有一件事:mongoose.connect("mongodb://root@localhost:27017/projectDB"); var db = mongoose.connection; db.once('open', function () { console.log('MongoDB connection successful.'); }); 你收到成功消息了吗?
  • @RahatMahbub mongo admin --username....不允许登录,不,我看不到消息

标签: node.js mongodb amazon-web-services mongoose bitnami


【解决方案1】:

因为,运行 $ 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.');
});

`

【讨论】:

    猜你喜欢
    • 2017-03-15
    • 1970-01-01
    • 2019-02-20
    • 2019-07-25
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多