Невозможно подключиться к базе данных mongodb с помощью node.js

#node.js #mongodb #mongoose

#node.js #mongodb #мангуст

Вопрос:

Я не могу подключиться к mongodb из node.js использование mongoose в качестве драйвера базы данных. Также я получаю следующую ошибку.

Ошибка:

 Error in DB connection:{"ok":0,"code":18,"codeName":"AuthenticationFailed","name":"MongoError"}
  

Я объясняю свой код ниже.

 const mongoose = require('mongoose');

const dbUser = process.env.USERNAME || 'admin';
const dbPass = process.env.PASSWORD || 'admin';
const dbServer = 'edqart-mongodb';
const dbPort = process.env.MONGO_PORT || '27017';
let dbName = 'edqart-db';
const url = `mongodb://${dbUser}:${dbPass}@${dbServer}:${dbPort}/${dbName}`;
console.log('url', url);
const options = {
    useNewUrlParser: true,
    useCreateIndex: true,
    connectTimeoutMS: 5000000,
    poolSize: 10000,
    useUnifiedTopology: true
};

/*
 1- Connect to mongo server
*/

mongoose.connect(url, options, (err) => {
    if(!err) {
        console.log('Mongodb connection with mongoose successed');
    } else {
        console.log('Error in DB connection:'   JSON.stringify(err, undefined, true));
    }
})
  

Здесь база edqart-db данных фактически отсутствует на этом конкретном сервере mongo. Мне нужно, чтобы одна запись вставляла db динамически создаваемую волю. Если у меня есть let dbName = 'admin'; , то мой узел подключен к mongodb, но для другой базы данных, которая не создана с момента начала ее отображения ошибки. Мне нужно, чтобы после вставки одной записи была edqart-db создана база данных. Здесь мне просто нужен аналогичный метод, например client.db(dbName) require('mongodb').MongoClient , для mongoose .

Ответ №1:

Я не думаю, что возможно пройти аутентификацию в несуществующей базе данных.

Вот что вам следует сделать, если вы хотите включить авторизацию edqart-db .

  • Создайте базу edqart-db данных.
  • Создайте пользователя для этого edqart-db . допустим username=edqartReadUser , и password=edqartReasPassword .
  • Тогда ваш существующий код должен работать ниже url.
 const dbUser = process.env.USERNAME || 'edqartReadUser';
const dbPass = process.env.PASSWORD || 'edqartReasPassword';
const dbServer = 'edqart-mongodb';
const dbPort = process.env.MONGO_PORT || '27017';
let dbName = 'edqart-db';
const url = `mongodb://${dbUser}:${dbPass}@${dbServer}:${dbPort}/${dbName}`;