Mongodb

無法連接到mongodb

  • December 8, 2021

我正在嘗試連接到 mongodb 並從中查詢數據。這是我正在做的事情:

在節點 js 中,我的 db 連接文件如下所示:

//Using mongodb drivers has to be installed using npm
var MongoClient = require('mongodb').MongoClient;
var dburl = 'mongodb://localhost:27017/meanhotel';

var _connection = null;

var open = function() {
MongoClient.connect(dburl, function(err, db) {
if (err) {
console.log("DB connection failed",err);
return;
}else{
_connection = db;
console.log("DB connection open");
}
});
};

var get = function() {
return _connection;
};

module.exports = {
open : open,
get : get
};

我用來從數據庫中查詢數據的節點js程式碼是這樣的:

var dbconn = require('../data/dbconnection.js');

var hotelData = require('../data/hotel-data.json');

module.exports.hotelsGetAll = function(req, res) {
//
var db = dbconn.get();
var collection = db.collection('hotels');
var docs=collection.find();

collection
.find()
.toArray(function(err,docs){
console.log("Found hotels",err);
res
.status(200)
.json(docs);
});

如果我訪問 URL

http://localhost:3000/api/hotels

什麼都沒有出來。

同樣在終端我得到這個輸出。

Found hotels { [MongoError: not authorized on meanhotel to execute command { find: "hotels", filter: {} }]
name: 'MongoError',
message: 'not authorized on meanhotel to execute command { find: "hotels", filter: {} }',
ok: 0,
errmsg: 'not authorized on meanhotel to execute command { find: "hotels", filter: {} }',
code: 13,

codeName: 'Unauthorized' }

我正在使用它來啟動 mongo shell:

mongo localhost:27017/admin -u user -p pass

另外,如果我想將數據轉儲到我正在使用的數據庫中。

sudo mongodump --db meantest -u user -p pass --authenticationDatabase
admin --gzip

可能出了什麼問題?

啟用 MongoDB 身份驗證時正確的 URL 格式是:

mongodb://

$$ username:password@ $$主機1$$ :port1 $$$$ ,host2[:port2 $$,…$$ ,hostN[:portN $$]]$$ /[database $$$$ ?options $$] 對於您的情況: mongodb://user:pass@localhost:27017/meanhotel?authSource=admin

參考:MongoClient 或如何以新的更好的方式連接

這對我有用

var dburl = mongodb://user:pass@localhost:27017/meanhotel;

引用自:https://dba.stackexchange.com/questions/158011