Estoy creando un sitio web con JavaScript, express.js, ejs y Node.js y me encontré con un problema.
Estoy enviando una matriz a la interfaz de esta manera:
const dataToSend = [ { id: "ID", name: "Name" }, { id: "ID", name: "Name" } ] res.render('configure', { array: dataToSend });Y poniéndolo en la interfaz con ejs de esta manera:
<%= array %> Si imprimo la matriz en la interfaz, el resultado será [object Object] y también typeof('<%= array %>') que devolvió una cadena.
Encontré algunos temas sobre esto, pero no encontré nada que ayude. Me gustaría saber cuál es la forma correcta de hacerlo. Gracias.
El problema aquí es que la matriz se convierte en una cadena. En JavaScript, los objetos ( {...} ) tienen un método toString que devuelve la cadena [object Object] de forma predeterminada.
Para resolver esto, debe asegurarse de que la matriz no se convierta en una cadena.
En EJS, tiene una variedad de etiquetas para elegir:
Tags <% 'Scriptlet' tag, for control-flow, no output <%_ 'Whitespace Slurping' Scriptlet tag, strips all whitespace before it <%= Outputs the value into the template (HTML escaped) <%- Outputs the unescaped value into the template <%# Comment tag, no execution, no output <%% Outputs a literal '<%' %> Plain ending tag -%> Trim-mode ('newline slurp') tag, trims following newline _%> 'Whitespace Slurping' ending tag, removes all whitespace after itfuente: https://ejs.co/
Es probable que esté buscando esto: <%- para generar la matriz JSON.stringify 'd.
<%- JSON.stringify(array) %>