Tengo este fragmento de código dentro de un controlador:
exports.getintroDetails = async (req, res) => { try { const details = await IntroModel.find(); return res.render("final", { details , user:req.user }); } catch (error) { console.log(error.message); } };Este código, como se esperaba, genera el archivo final.ejs con los datos proporcionados.
Pero en cambio, quiero mostrar el html sin formato que obtenemos después de renderizar final.ejs con los datos proporcionados. ¿Hay alguna forma de almacenar el html sin procesar como una cadena en lugar de representarlo?
Entonces, en lugar de:
return res.render("final", { details , user:req.user });Quiero algo como esto:
return res.send( view-source( res.render("final", { details , user:req.user }) ) ); ¿Hay alguna función como view-source() como se describe arriba?
De acuerdo con los documentos , puede proporcionar una callback de llamada que se ejecutará con el html representado. Cuando se proporciona la devolución de llamada, la respuesta no se realizará automáticamente.
exports.getintroDetails = async (req, res) => { try { const details = await IntroModel.find(); return res.render("final", { details , user:req.user }, (err, html) => { console.log('rendered html!', html) // now, the response has to be made manually. res.status(200).send(html) }); } catch (error) { console.log(error.message); } }; También es posible renderizarlo usando app.render() solo para recibir el html .
de los documentos
Piense en app.render() como una función de utilidad para generar cadenas de vista renderizadas. Internamente, res.render() usa app.render() para representar vistas.
app.render('final', function (err, html) { // ... })