Escribí un pequeño módulo de Javascript para obtener filas de una base de datos MongoDB:
async function getAll() { await mongoose.connect(config.mongoURL).catch(err => { console.log(err); }); const conn = mongoose.connection; conn.collection('healthdata') .find({}).toArray().then(result => { console.log('=>Docs:', result); return result; }).catch (err => { console.log(err); }).finally(() => { conn.close(); }); } exports.getAll = getAllObtengo la visualización correcta de la consola ("=>Docs:"). Pero, cuando quiero obtener el resultado de la siguiente función de llamada, obtengo el valor Indefinido ("Resultado:"):
app.get("/", async (req, res) => { var docs = await db.getAll().then(); console.log("Result:", docs); res.render("index.html"); });¿Lo que falta? ¿Equivocado?
Creo que la línea console.log(Result:...) se está ejecutando antes de que se complete getAll.
Lo envolvería dentro de la cláusula "entonces":
app.get("/", async (req, res) => { const docsReturned = await db.getAll() .then(docs => { console.log("Result:", docs); res.render("index.html"); }) .catch(err => { console.error(err); })); return(docsReturned);También sugiero agregar una captura para cualquier error... buenas prácticas. :)
no debe mezclar promesas con async/await, por lo que la respuesta proporcionada por G-Force pero eliminar await antes db.getAll() o usar var docs = await db.getAll(); Esto debería solucionar tu problema.
Hermano, si está usando mangosta, siga estos para obtener datos del esquema de mangosta
schema.find().exec().then(result=>{ console.log(result) }).catch(error=>{ console.log(error) })aquí todos los datos del esquema dan como resultado que consolamos si aparece algún error, se muestra en console.log (error)