Estoy trabajando en una máquina de cotización aleatoria. Aquí están mis cosas de NODE:
var express = require("express"); var app = express(); app.set("view engine", "ejs"); app.get("/", function(req,res){ var data = "http://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1"; res.render("home", {data: data}); }); app.listen(process.env.PORT, process.env.IP, function(){ console.log("SERVER STARTED"); });Aquí están las cosas de EJS...
<h1>HELLO</h1> <li><%= data.data %></li>Todo va bien, excepto que este es el problema...
"data.data" entre corchetes EJS, simplemente no es nada. Nada ahí. Y me he estrujado el cerebro tratando de averiguar qué está pasando, pero no puedo. La notación de corchetes tampoco funcionó. ¿Alguna idea de lo que va mal?
¡Gracias!
Cuando pasa cosas al renderizador, el objeto que pasa en el segundo parámetro se convierte en un 'global' en la página renderizada ejs. Entonces, cuando configuras algo como a continuación:
res.render("home", { myString: "I like strings" });
... puede acceder a él refiriéndose a la cosa dentro del objeto pasado:
<li><%=myString%></li>
por lo que su data.data apunta a nada.
Tengo el mismo problema y esta es mi solución. Agregue .toJSON() después data :
<li><%=data.toJSON().data%></li>