Quiero enviar los datos en res.send (datos). Cuando yo
console.log("This dox data",text);en la terminal, funciona bien. Registra todo el contenido de texto en la terminal. Pero accediendo al frontend me da error
router.get("/api/emailtemplates/data/:subject", (req, res) => { Email_templates.find({subject: req.params.subject}, (err, data) => { if (!err) { const val = data[0]['template_file_link']; console.log(val); const data= textract.fromFileWithPath(val, function( error, text ) { console.log("This dox data",text); }); res.send(data); } else { console.log(err); } });Estaba tratando de devolver algo incorrecto, necesita enviar una respuesta en la devolución de llamada de la función texttract
router.get('/api/emailtemplates/data/:subject', async (req, res) => { try { const templates = await Email_templates.find({ subject: req.params.subject }); const val = templates[0].template_file_link; console.log(val); textract.fromFileWithPath(val, (error, text) => { console.log('This dox data', text); return res.json({ text }); }); } catch (error) { console.log(error); return res.status(500).json({ error: true }); } });Ese código le dará el error Uncaught ReferenceError: Cannot access 'data' before initialization . Está tratando de usar la constante data que ha declarado dentro del bloque if (!err) antes de que se haya inicializado esa constante, porque ha usado data tanto como el nombre del parámetro del que va a recibir los datos. Email_templates.find in y también como la constante en la que almacena el resultado de textract.fromFileWithPath in. Aquí hay un ejemplo más simple del problema:
function example(err, data) { // ^^^^−−−−−−− parameter called `data` if (!err) { const val = data[0]['template_file_link']; // ^^^^−−−−−−−−− ReferenceError here // because this is trying to use // the constant below before it's // initialized (it's in the "Temporal // Dead Zone") const data = "whatever"; } } example(null, [{template_file_link: ""}]);Use diferentes nombres para ellos. Por ejemplo:
router.get("/api/emailtemplates/data/:subject", (req, res) => { Email_templates.find({subject: req.params.subject}, (err, data) => { if (!err) { const val = data[0]['template_file_link']; console.log(val); const fileData = textract.fromFileWithPath(val, function( error, text ) { // ^^^^^^^^ console.log("This dox data",text); }); res.send(fileData); // ^^^^^^^^ } else { console.log(err); } }); });