En mi sitio, un usuario puede agregar un aviso, quiero que la página muestre al autor del aviso.
const notices = await Notice.findById(id).populate('author');En esta ruta puedo consola.log (avisos) y ver el autor de la publicación, y puedo mostrar el autor usando EJS<%= avisos.autor.nombre de usuario%>
PERO en esta ruta
const notices = await Notice.find({}).populate('author');Puedo ver a los autores cuando consola.log (avisos), pero cuando trato de mostrarlo con <%= avisos.autor.nombre de usuario%>, aparece un error que dice que el nombre de usuario no está definido.
¡¡¡Ayuda!!!
Dado que las notices son una matriz, debe acceder a sus elementos por índice o mapeando sus elementos:
// Access the first element if present if (notices.length > 0) { <%= notice[0].author.username %> } // OR map its elements notices.map(notice => <%= notice.author.username %>)const notices = await Notice.findById(id).populate('author'); const notices2 = await Notice.find({}).populate('author');La ruta anterior se nota como el objeto y obtiene Notices2 como la matriz debido a que obtiene Notices como la consulta de findBYID y obtiene Notices2 como la consulta de Find. Es por eso que obtener notificaciones obtiene un objeto y notificaciones2 obtiene una matriz.
// notices Object element <%= notices.author.username %> //notices2 map elements by display frist authore if (notices2.length > 0) { <%= notices2[0].author.username %> } // OR loop for map by display all authore notices2.map(n => <%= n.author.username %>)