Estoy en medio de un proyecto personal para practicar mejor el desarrollo web para comprender los entresijos del desarrollo web, pero me he topado con una pared de ladrillos. En este proyecto personal, estoy creando una página de perfil. He vinculado con éxito la base de datos MySQL al archivo js de mi servidor porque puedo importar datos a la tabla, pero estoy atascado tratando de exportar los datos a un archivo ejs.
Hice lo siguiente para exportar el código, pero ni siquiera puedo llamar a los datos porque no puedo hacer que SQL localice ninguna entrada desde el inicio de sesión.
app.get('profile', function (req, res) { console.log("Inside Get Profile"); connection.query('SELECT * FROM ACCOUNTS WHERE PrimaryEmail = ? ', [req.body.email], function(error, results, fields) { if (error){ console.log("Error"); console.log(error); } else if (results.length > 0) { console.log("Data From Get Profile") console.log(results); res.render('profile', { data: results }); }})});Entonces hice lo siguiente en un intento de resolver mi problema, lo que podría funcionar, pero estoy en el asunto de extraer los datos en el archivo ejs.
function userProfile(req, res, next){ console.log("Inside userProfile Function"); connection.query('SELECT * FROM ACCOUNTS WHERE PrimaryEmail = ? ', [req.body.email], function(error, results, fields) { if (error){ console.log("Error"); console.log(error); next(); } else if (results.length > 0) { console.log("Data From userProfile Function"); console.log(results); res.render('profile', { data: results }); next(); }})};Llamaría a la función al iniciar sesión después.
app.post('/login', userProfile, passport.authenticate('local', {failureRedirect:'/login-faliure', successRedirect:'/dashboard'}));¡Cualquier consejo sobre cómo obtener datos de MySQL para mostrar cierta información para la página de perfil sería suficiente!
¡Gracias por tu tiempo!
Parece que implementó el código correcto para pasar los parámetros a EJS (el primer fragmento de código que mostró), por lo que no hay razón para que algo como esto no funcione.
¡Hola, <%=data.name%>!
Esto se debe a que pasó los datos del usuario en "datos" aquí:
res.render('profile', { data: user });Descubrí que tenía dos métodos app.get('profile') y ahora la página se carga sin errores después de eliminar el que no es necesario. Lo siguiente que tuve que hacer fue agregar el siguiente código después de "resultados.longitud > 0" y mis datos comenzarían a mostrarse.
user={id:results[0].ID, email:results[0].PrimaryEmail, hash:results[0].EncryptHash, password:results[0].EncryptPassword}; console.log(user); res.render('profile', { data: user})