Estoy aprendiendo docker, así que estaba siguiendo uno de los videos que mostraba cómo conectar su aplicación js con mongoDB cuando se ejecuta en contenedores docker. Ahora, una pequeña variación que hice es que se muestra para conectar mongo en el puerto del sistema 27017, que es el puerto predeterminado de mongo, pero el problema es que no quiero conectarme a mi sistema mongo instalado sino al contenedor mongo, así que para ese propósito decidí ejecute el contenedor mongo en el puerto 3535. Cuando lo hice, mongo-express se conectó con éxito a mongo, pero cuando intento conectarlo con mi aplicación js (usando mongoose), muestra continuamente errores con el error de autenticación. He verificado que la contraseña es correcta. no hay problema con los corchetes, el comando que usé para subir mis contenedores docker es
docker run -d -p 3535:27017 --name mongoDB --network databases -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin mongo
y otro para mongo-express es
docker run -d -p 8081:8081 --name mongoExp --network databases -e ME_CONFIG_BASICAUTH_USERNAME=admin -e ME_CONFIG_BASICAUTH_PASSWORD=admin -e ME_CONFIG_MONGODB_SERVER=mongoDB -e ME_CONFIG_MONGODB_AUTH_USERNAME=admin -e ME_CONFIG_MONGODB_AUTH_PASSWORD=admin mongo-express
El código de mi aplicación de nodo se ve así
const mongoose = require('mongoose'); const {Humans}= require("./models/humans.js") mongoose.connect('mongodb://admin:admin@localhost:3535/user', {useNewUrlParser: true, useUnifiedTopology: true }).then(()=>{ console.log("connected to db"); }) let data={ name:"Vaibhav Jain", mob:"9801", skills:"coding" } const express = require('express') const app = express(); app.set('view engine', 'ejs'); app.get("/",async(req,res)=>{ // console.log(Humans); // await Humans.insertMany( ); // await Humans.insertMany({name:"Mobius" , mob:"5908922",skills:"drawing"}); const result = await Humans.find(); res.send(result); }) app.get("/home",(req,res)=>{ res.render("home", data); }) app.listen(3000,()=>{ console.log("listening port"); })
Es posible que no haya creado un usuario para el usuario de la base de user después de crearlo mediante la interfaz de usuario. En su caso, puede ejecutar esta consulta para crear un usuario normal.
> use user
> db.createUser({user: "user", pwd: "user", roles:["dbOwner"]})
Después de eso, puede conectarse a la base de datos de user usando esta cadena mongodb://user:user@localhost:3535/user
Consulte el documentodb.CreateUser .