Estoy tratando de conectar mi aplicación deno a mongodb pero recibo un error.
import {MongoClient} from "https://deno.land/x/mongo@v0.21.2/mod.ts"; const client = await new MongoClient(); await client.connect("mongodb+srv://deno:i4vY8AtCEhr6ReqB@sample.7jp1l.mongodb.net/deno?retryWrites=true&w=majority"); const db = client.database("notes"); export default db;todo parece estar bien, pero cuando ejecuto la aplicación, aparece este error.
error: Uncaught (in promise) Error: MongoError: "Connection failed: failed to lookup address information: nodename nor servname provided, or not known" throw new MongoError(`Connection failed: ${e.message || e}`); ^ at MongoClient.connect (client.ts:93:15) at async mongodb.ts:4:12 problemas que le veo:
Para que funcione con Mongo Atlas, debe llamar a un método de conexión con parámetros diferentes y encontrar un host correcto (estático) en lugar de una lista de semillas DNS (dinámica):
const client = new MongoClient(); const db = await client.connect({ db: '<your db or collection with work with>', tls: true, servers: [ { host: '<correct host - the way to get the host - see bellow>', port: 27017, }, ], credential: { username: '<your username>', password: '<your password>', mechanism: 'SCRAM-SHA-1', }, });Cómo obtener el host correcto:
Gracias @nthung.vlvn por la pista. De hecho, el host debe ser un fragmento principal. Reparó la lookup address information , pero tuve otro error, que mis credenciales son incorrectas. Tuve que agregar db "admin" a la credencial:
credential: { username: '<your username>', password: '<your password>', db: "admin", mechanism: 'SCRAM-SHA-1', } Eso es raro, porque no tengo db de admin en mi Atlas. De todos modos empezó a funcionar.