Решил защитить свою бд и подключить аутентификацию для удалённого доступа. Но не смог найти информацию об аутентификации через MongoClient, только если использовать mongoose, чего я не хочу. Ещё был вариант авторизация в url const url = 'mongodb://user:pass@localhost:27017/dbname'; но этот вариант не работает. MongoDB v.4.0.6
var db = null;
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017/';
MongoClient.connect(url, {useNewUrlParser: true}, function(err, dbr) {
if (err) throw err;
db = dbr.db("my-db");
});
Нашёл решение проблемы. Так как я зарегистрировал пользователя через консоль, который управляет несколькими базами данных, то для подключения нужно указывать самую первую зарегистрированную базу данных, а потом уже подключаться к нужной базе данных. Очень долго ломал над этим голову, но интуиция не подвела :) Вот код:
var db = null;
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017/';
MongoClient.connect(url, {
useNewUrlParser: true,
auth: {username: "admin", password: "pass"},
authSource:'first_db'
}, function(err, dbr) {
if (err) throw err;
db = dbr.db('necessary_db');
});
И вот ещё один вариант, который мне показался неудобным и устаревшим:
var db = null;
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://user:pass@localhost:27017/?authSource=first_db';
MongoClient.connect(url, {
useNewUrlParser: true,
}, function(err, dbr) {
if (err) throw err;
db = dbr.db('necessary_db');
});
Продвижение своими сайтами как стратегия роста и независимости