Estoy ejecutando un servidor MongoDB local y estoy tratando de conectarme desde un servidor node.js usando la biblioteca Mongoose.
Estoy usando SCRAM-SHA-1 como mecanismo de autenticación.
Puedo conectarme con la cuenta de administrador cuando no especifico una base de datos a la que conectarme, usando una cadena de conexión como:
mongodb://{username}:{password}@{address}:{port}?authMechanism=SCRAM-SHA-256
Pero cuando trato de especificar a qué base de datos conectarme, uso una cadena de conexión como:
mongodb://{username}:{password}@{address}:{port}/database123?authMechanism=SCRAM-SHA-256
la autenticación falla.
Como referencia, mi código se ve así:
const mongoose = require('mongoose');
let conn_string = `mongodb://mongo_uname:mongo_pass@192.168.1.1:3000/database123?authMechanism=SCRAM-SHA-256`
mongoose
.connect(database_uri, {
useUnifiedTopology: true
})
.then(() => console.log('MongoDB database Connected...'))
.catch((err) => console.log(err))
¿Hay alguna forma diferente de especificar a qué base de datos conectarme con mongoose, o hay algo que pueda hacer de manera diferente al construir la cadena de conexión para que funcione?
Salud.
import mongoose from "mongoose";
const mongoDB = "mongodb://localhost:27017/twlight";
mongoose.Promise = global.Promise;
mongoose.connect(mongoDB, { useNewUrlParser: true })
.then(() => {
console.log("Database is connected");
},
(err) => {
console.log("There is problem while connecting database " + err);
});
Por favor, inténtalo
Nota: crepúsculo es el nombre de la base de datos
Si usa Mongoose v6+, NO debe especificar useUnifiedTopology .
Eso está en desuso y si lo incluye, Mongoose arrojará el error. Intente incluir solo la cadena de conexión:
mongoose.connect(database_uri)
Mi error terminó en la configuración del usuario de la base de datos con el que intentaba conectarme, ni siquiera estaban configurados para leer o escribir en la base de datos a la que intentaba conectarme.