Estoy usando nextjs para crear un tablero y tengo la autenticación usando next-auth.
Sin embargo, estoy tratando de mostrar los datos de los usuarios individuales cuando inician sesión en el tablero, pero no estoy seguro de dónde me estoy equivocando. Sé que tengo que usar la devolución de llamada de findOne pero por alguna razón no puedo obtener la ID o el 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({ user }) { return ( <> <Head> <title>Ellis Development - Dashboard</title> </Head> <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> </> ) } // get data from database using server side rendering and mongodb connection 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)) } } }Puede usar getSession para manejar las autenticaciones del lado del servidor.
consulte la referencia para obtener más recursos enlace
import { getSession } from "next-auth/react" ... export async function getServerSideProps(ctx) { const session = await getSession(ctx) //pass context to authenticate create session const id = session.user.id //get id from session const client = await connectToDatabase(); const user = await client.db().collection('users').findOne({ _id: id }) // No need to use toArray its returns only 1 object return { props: { user } } }