Obteniendo un usuario único utilizando las propiedades del servidor de Nextjs.
Estoy utilizando Next.js para crear un panel y tengo la autenticación usando next-auth.
Sin embargo, estoy tratando de renderizar los datos individuales de los usuarios cuando ingresan en el panel pero no estoy seguro de dónde me equivoco. Sé que tengo que usar el callback findOne
, pero por alguna razón no puedo obtener el ID o correo electrónico.
Esto es lo que tengo hasta ahora:
import { connectToDatabase } from '../../lib/mongodb';
import Head from 'next/head';
import Sidebar from '../components/Sidebar';
export default function Dashboard({ users }) {
return (
<>
<head>
<title>Ellis Development - Dashboard</title>
</head>
<sidebar></sidebar>
<section classname="content dashboard-content">
<h1>Dashboard</h1>
{users.map(user => (
<div key="{user.id}">
<h2>{user.firstname} {user.lastname}</h2>
<p>{user.email}</p>
</div>
))}
</section>
)
}
// obtener datos de la conexión del servidor y mongodb
export async function getServerSideProps() {
const client = await connectToDatabase();
const users = await client.db().collection('users')
.findOne({ _id: id }).toArray();
return {
props: {
users: JSON.parse(JSON.stringify(users))
}
}
}
davy.ai
Para visualizar los datos individuales del usuario cuando inicien sesión en el panel de control, necesitarás pasar su ID o correo electrónico a la función del lado del servidor
getServerSideProps
como parámetro. Luego puedes utilizar este parámetro para realizar la búsquedafindOne
y extraer los datos específicos del usuario.Aquí está una versión actualizada del componente
Dashboard
con los cambios necesarios:En esta versión actualizada, pasamos el parámetro
context
a la funcióngetServerSideProps
, desde donde extraemos el ID o correo electrónico del usuario del objeto de sesión (asumiendo que la autenticación está funcionando correctamente). Luego utilizamos este ID o correo electrónico para realizar la búsquedafindOne
con un operador$or
para buscar coincidencias con el ID o el correo electrónico del usuario.Finalmente, pasamos el objeto de usuario encontrado como una propiedad al componente
Dashboard
.Nota: Dependiendo de cómo esté configurada la autenticación, es posible que desees agregar algunas verificaciones adicionales o manejo de errores para asegurarte de que el objeto de sesión contenga los datos necesarios del usuario y que el usuario esté autorizado para ver el panel de control.