Estoy tratando de mostrar un campo específico del primer objeto que está dentro de una matriz de objetos.
índice.js:
router.get('/chatroom', ensureAuthenticated, (req, res) => { const user = req.user chatroom.find({chatroom_users: user.name}, function (error, data) { res.render("chatroom", { data, user: req.user}); }) } })sala de chat.ejs:
<script> <% for (var i = 0; i < data.length; i++) { %> var chatroom_message0 = "<%= data[i].chatroom_message.date%>" <% } %> </script>Esta es la estructura en MongoDB:
Pero hasta ahora solo puedo mostrar el objeto completo pero no el campo específico que quiero, en este caso el campo "fecha".
He probado muchas combinaciones diferentes, por ejemplo:
"<%= data[i].chatroom_message["date"]%>" "<%= data[i].chatroom_message._date%>"Pero no puedo hacer que funcione, por lo que agradecería cualquier ayuda.
la fecha está dentro de una matriz, por lo que tiene sentido que no pueda seleccionar de esa manera, según el formato de sus datos, se puede usar así:
<= data[i].chatroom_message[0].date %>si el formato es
data = [ {chatroom_message : {date, user_name, message} }, {chatroom_message : {date, user_name, message} }, ] <% for( let i = 0; i < data.length; i++ ) { %> <% const {chatroom_message} = data[i] %> <% for( let j = 0; j < chatroom_message.length; j++ ) { %> <%= chatroom_message[j].date %> <% } %> <% } %>o si el formato es
chatroom_message = [ {date, user_name, message} ] <% for( let i = 0; i < chatroom_message.length; i++ ) { %> <%= chatroom_message[i].date %> <% } %>Lo descubrí, cometí un error tipográfico en mi modelo mongodb. Había escrito "fechas" en el modelo en lugar de "fecha", por eso no apareció.