es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Definir y usar un objeto transmitido de Express a EJS.

En mi manejador de ruta, paso un objeto (el objeto es el resultado de una consulta SELECT a la base de datos) a mi archivo ejs que se renderiza de la siguiente forma:

const query = await pool.query('SELECT * FROM table');
const obj = query.rows();
response.render('/ejspage', {
obj: obj
});

En mi archivo ejs, luego intento asignar este objeto a una variable y loop a través de él:
“`

<script>
var data = '<%= obj %>';

data.forEach(function(o) {
console.log(o);
}
</script>

<p><code>
Esto provoca el siguiente error:</code> Uncaught TypeError: obj.forEach is not a function “`

He intentado usar JSON.parse(obj) pero esto resulta en el siguiente error Uncaught SyntaxError: Unexpected token o in JSON at position 1

También he intentado JSON.stringify(obj) para resolver el error sin suerte.

Cuando imprimo la variable console.log(obj) obtengo:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Sé que puedo usar código javascript incrustado en ejs (cuando hago esto, puedo usar forEach() en obj sin ningún problema) pero para mi propósito específico me gustaría hacerlo de la manera mostrada (es decir, dentro de las etiquetas <script>).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema es que el objeto que se pasa al archivo ejs no es un array, sino un objeto. Para iterar a través del objeto en el archivo ejs, primero es necesario convertirlo a un array. Esto se puede hacer utilizando Object.values(obj) para extraer los valores del objeto y crear un array de ellos.

    El código actualizado en el archivo ejs será:



    El método JSON.stringify se utiliza para convertir el array a una cadena para que se pueda mostrar en la etiqueta de script. Además, el uso de Object.values(obj) convierte el objeto en un array, que se puede iterar usando data.forEach.

Comments are closed.