Soy nuevo en MongoDB y acabo de encontrar dos tipos de cadena de conexión.
mongodb://[nombre de usuario:contraseña@]host1[:puerto1][,host2[:puerto2],...[,hostN[:puertoN]]][/[base de datos][?opciones]]
mongodb+srv://[nombre de usuario:contraseña@]host[/[base de datos][?opciones]]
Yo sé sobre el 1er. Pero no estoy familiarizado con el (+srv) en el 2do.
let connectionUrl; if (username && password) connectionUrl = `mongodb://${username}:${password}@${host}:${ port || 27017 }/${databaseName}`; else connectionUrl = `mongodb://${host}:${ port || 27017 }/${databaseName}`; console.log(connectionUrl, "connectionUrlconnectionUrl"); let connection = await mongoose.createConnection(connectionUrl, { useNewUrlParser: true, }); return connection;Ahora el usuario problemático puede ingresar nombre de usuario, contraseña, nombre de host, etc...
Pero, ¿hay alguna forma de saber cuándo agregar (+srv) porque estaba intentando con localhost y con MongoDB atlas? Atlas funciona bien con +srv pero en el caso de localhost, arroja un error.
en MongoDB 3.6 se introduce el concepto de una lista de semillas que se especifica utilizando registros DNS, específicamente registros SRV y TXT . Al usar conjuntos de réplicas con MongoDB, recordará que el cliente debe especificar al menos un miembro del conjunto de réplicas (y puede especificar varios de ellos) al conectarse. Esto permite que un cliente se conecte a un conjunto de réplicas incluso si uno de los nodos que especifica el cliente no está disponible.
Puede ver un ejemplo de esta URL en una cadena de conexión 2.2.12 o posterior
Tenga en cuenta que sin la configuración del registro SRV, debemos enumerar varios nodos (en el caso de Atlas, siempre incluimos todos los miembros del clúster, aunque esto no es obligatorio). También tenemos que especificar las opciones ssl y replicaSet
Con el controlador 3.4 o anterior, tenemos que especificar todas las opciones en la línea de comando usando la sintaxis URI de MongoDB .
El uso de registros SRV elimina el requisito de que cada cliente pase un conjunto completo de información de estado para el clúster. En cambio, un solo registro SRV identifica todos los nodos asociados con el clúster (y sus números de puerto) y un registro TXT asociado define las opciones para el URI.
verifique la referencia
En MongoDB 3.6, introdujeron el concepto de una lista de semillas que se especifica mediante registros DNS, específicamente registros SRV y TXT.
Esto permite que un cliente se conecte a un conjunto de réplicas incluso si uno de los nodos que especifica el cliente no está disponible.
Si se pregunta cómo obtener los detalles usted mismo, suponiendo que su host sea foo.example.com
host -t SRV _mongodb._tcp.foo.example.com host -t TXT foo.example.com