Mongoose继续存在错误:未经授权以简单collection.find()



尝试将 db.collection('collection-name').find()转换为猫鼬大约3个小时,但似乎永远无法使用find()

堆栈跟踪:

Error: unauthorized db:parks ns:parks.parkpoints lock type:0 client:127.2.132.1
at Promise.error (/var/lib/user/app-root/runtime/repo/node_modules/mongoose/lib/promise.js:88:38)
at cb (/var/lib/user/app-root/runtime/repo/node_modules/mongoose/lib/query.js:1454:29)
at /var/lib/user/app-root/runtime/repo/node_modules/mongoose/lib/utils.js:408:16
at /var/lib/user/app-root/runtime/repo/node_modules/mongodb/lib/mongodb/cursor.js:146:30
at /var/lib/user/app-root/runtime/repo/node_modules/mongodb/lib/mongodb/cursor.js:188:32
at /var/lib/user/app-root/runtime/repo/node_modules/mongodb/lib/mongodb/cursor.js:504:39
at Cursor.close (/var/lib/user/app-root/runtime/repo/node_modules/mongodb/lib/mongodb/cursor.js:776:5)
at [object Object].<anonymous> (/var/lib/user/app-root/runtime/repo/node_modules/mongodb/lib/mongodb/cursor.js:504:21)
at [object Object].g (events.js:156:14)
at [object Object].emit (events.js:88:20)
npm info Sample-App@1.0.0 Failed to exec start script

Connection.once('open')事件被击中,因此连接不应该是问题所在,但是我一直在 console.log("find() error");遇到错误。

有人对正在发生的事情有任何线索吗?

  • 数据库名称:公园
  • 收集名称:Parkpoints
  • Mongoose版本:3.3.1
  • mongoDB版本:2.2.0

i仔细检查了用户,通过,主机和端口的值,这些值不应该是问题的根源。

self.connectDb = function(callback){
mongoose.connection.on('error', function(err){
  console.log("connection error");
  throw err;});
mongoose.connection.once('open', function(){
  callback();
  self.Parkpoint=mongoose.connection.model('Parkpoint', 
           new Schema({ Name: String, pos: [Number]})); 
  self.Parkpoint.find().exec(function(err, names) {
    if(err){
      console.log("find() error");
      throw err};
     console.log("names: "+names);
    res.header("Content-Type:","application/json");
    res.end(JSON.stringify(names));
});

});
var dbUri = 'mongodb://'+self.dbUser+':'+self.dbPass+'@'+self.dbHost+':'+self.dbPort+'/parks';
console.log(dbUri);
mongoose.connect(self.dbHost, "parks", self.dbPort, {user:self.dbUser, pass:self.dbPass});
};

已解决:需要运行adduser()命令以添加DB的auth。我认为自MongoDB驱动程序工作以来它起作用了,但是显然从未真正添加过用户...也许是因为它是管理员。根本原因仍然不太清楚,但是问题似乎很容易解决,以更多地关注Auth Management。