Estoy construyendo algo donde necesito consultar cosas de MongoDB y mostrar los resultados en el Frontend usando la plantilla EJS en node.js.

Todo va bien al consultar los resultados. Todos los valores de la matriz se devuelven cuando los console.log(), pero en la interfaz usando la plantilla EJS, solo se devuelve un valor.

Aquí está mi código para consultar el resultado:

app.get('/', function (req, res) {
    user.find({}, { __v: 0, _id: 0}, function (err, result) {
        if (err) throw err; 
        result.forEach(function(u) {
            console.log(u.imgs); 
            res.render('pages/index',{
                path: u.imgs,
                state: req.session.state
        });   
    }); 
});

Mi código en EJS:

<% for(var i=0; i<path.length; i++) { %>        
    <%= path[i] %> 
<% } %>

Este es el código en user

var userSchema = mongoose.Schema ({


imgs: String

})

¿Qué crees que está mal con mi código?

1
Adetona Abiodun Abdulquadri 19 feb. 2018 a las 09:32

2 respuestas

La mejor respuesta

Elimine el bucle forEach en su consulta y asigne la matriz de resultados en el atributo de ruta, es decir,

app.get('/', function (req, res) {
    user.find({}, { __v: 0, _id: 0}, function (err, result) {
        if (err) throw err; 
        res.render('pages/index',{
            path: result.map(u => u.imgs),
            state: req.session.state
        });  
    }); 
});
1
chridam 19 feb. 2018 a las 13:28

Necesitas etiquetas HTML como

<ul>
<% for(var i=0; i<path.length; i++) {%>
   <li><%= path[i] %></li>
<% } %>
</ul>
0
elingerojo 19 feb. 2018 a las 06:51