Mostrar datos de usuario de Mongo en archivo EJS con node/express
Estoy ejecutando node/express/mongoose/mongo y estoy intentando mostrar la información de un usuario registrado en su página de cuenta.
En mi archivo controlador de usuario, estoy intentando acceder a su ID de usuario de Mongo para luego buscar el objeto completo del usuario, cargar ese objeto en una constante y pasar ese objeto a la renderización de un archivo EJS.
const User = require('../models/user');
module.exports.account = async (req, res) => {
const userID = req.user._id;
const { user } = await User.findById(userID);
res.render('app/account', { user });
}
Cuando imprimo userID
en la consola, obtengo “new ObjectId(“61d321284256dffb7e869e8f”)” (¿no debería obtener simplemente la cadena de números?).
Cuando imprimo user.email
al codificar manualmente findByID('61d321284256dffb7e869e8f')
, obtengo el error “TypeError: No se pueden leer las propiedades de indefinido”.
Realmente estoy perdido en este tema, así que agradezco cualquier ayuda aquí.
davy.ai
Solución:
Parece que podría haber un problema con la forma en que estás accediendo a la información del usuario en el modelo
User
. Aquí hay algunas cosas que puedes intentar:toString()
para convertirlo en una cadena:findOne()
en lugar defindById()
:Esto devolverá un objeto de usuario que puedes pasar a tu archivo EJS.
Al pasar datos al archivo EJS, asegúrate de que los nombres de las variables sean correctos. Estás pasando
{ user }
, lo que significa que el nombre de la variable en tu archivo EJS debería seruser
. Asegúrate de estar utilizando el nombre de variable correcto en tu código de plantilla.Esperamos que una de estas sugerencias te ayude a resolver el problema. ¡Buena suerte!