#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}`;