El objetivo es llamar a una función desde mi secuencia de comandos principal que se conecta a una base de datos, lee un documento de ella, almacena partes de ese documento en un nuevo objeto y devuelve ese objeto a mi secuencia de comandos principal. El problema es que no puedo hacer que todo funcione junto. Si intento una cosa, obtengo los resultados pero mi programa se bloquea. Si pruebo otra cosa, obtengo resultados indefinidos.
Para resumir, ¿cómo abro una base de datos y recupero algo de ella a otro script? El programa es un sitio de cuestionarios y quiero devolver el nombre del cuestionario y las preguntas.
const myDb = require('./app.js'); var myData = myDb.fun((myData) => { console.log(myData.quizName); });Aquí está el script que intenta abrir la base de datos y encontrar los datos.
const { MongoClient } = require("mongodb"); const {mongoClient} = require("mongodb"); const uri = connection uri goes here but my name is hard coded into it at the moment so I removed for privacy const client = new MongoClient(uri); const fun = async (cback) => { try { await client.connect(); const database = client.db('Quiz-Capstone'); const quizzes = database.collection('Quiz'); const query = {quizName: "CIS01"}; const options = { sort: {}, projection: {} }; const quiz = await quizzes.findOne(query, options); var quizObject = { quizName: quiz.quizName, quizQuestions: quiz.quizQuestions } //console.log(testOb); } finally { await client.close(); cback(quizObject); } } fun().catch(console.dir); module.exports = { fun: fun }ACTUALIZACIÓN: Todavía atascado. He leído varios hilos diferentes aquí sobre llamadas asincrónicas y devoluciones de llamada, pero no puedo ubicar mi función en un archivo para devolver un valor a la persona que llama ubicada en otro archivo.