Ejecutando el proceso mongod en segundo plano, en el shell mongo (mongosh), tengo la base de datos de wikipedia cargada en mi base de datos "enwiki". Entonces, en el shell, puedo escribir db.pages.find() y me mostrará algunas páginas de Wikipedia. De manera similar, si llamo a db.getCollectionNames() , devuelve ['pages']. db.getCollection("pages").find() también funciona.
Sin embargo, si voy a mi script nodejs, db.collection("pages").find() no contiene nada.
const MongoClient = require("mongodb").MongoClient; const url = 'mongodb://localhost:27017/'; const dbName = 'enwiki'; const client = new MongoClient(url, { useUnifiedTopology: true }); client.connect().then(client => { console.log('Connected successfully to server'); const db = client.db(dbName); const cursor = db.collection("pages").find(); cursor.forEach(doc => { console.log(doc.plaintext);}); });Ejecutar el código anterior simplemente imprime 'Conectado correctamente al servidor' y se detiene. (También debería imprimir el texto sin formato de todos mis artículos de Wikipedia en mi base de datos).
Soy nuevo en mongo, así que siento que me estoy perdiendo algo obvio. La base de datos se creó originalmente usando dumpster-dive . Llamar db.listCollections() devuelve esto en el depurador de nodos:
{ _events: Object, _eventsCount: 0, _maxListeners: 'undefined', parent: Db, filter: Object, ... }Ese objeto no contiene la colección de páginas que espero. ¿Cómo accedo a la colección de páginas?
EDITAR 18/01/22 (día siguiente): lo ejecuté hoy, no en el depurador, y simplemente funcionó. Por alguna razón, ejecutar db.collection("pages").find() y db.collection("pages").find().limit(1) en el depurador de nodos devuelve un objeto extraño similar al anterior. Por otro lado, ejecutando cursor.forEach(doc => { console.log(doc.plaintext);}); en el depurador de nodos simplemente devuelve:
{ [[PromiseState]]: 'pending', [[PromiseResult]]: 'undefined' }Y termina sin hacer nada más, así que pensé que no estaba haciendo nada. En mi código no completamente reducido que se muestra aquí, también tenía un par de errores tipográficos dentro de la promesa forEach cuyos errores se suprimían.
El código anterior funciona y simplemente no parecía funcionar. En mi caso, creo que fue una combinación de supresión de errores que no estaba viendo y este extraño comportamiento del depurador de nodos que me hizo creer que no estaba funcionando. Me encantaría una explicación de por qué ocurre este comportamiento del depurador y cómo evitarlo/solucionarlo.