我正在使用 nextjs 創建儀表板,并且使用 next-auth 進行身份驗證。
但是,當他們登錄到儀表板時,我試圖呈現個人用戶資料,但不確定我哪里出錯了,我知道我必須使用findOne回呼,但由于某種原因我無法獲取 ID 或電子郵件。
這是我到目前為止所擁有的
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))
}
}
}
uj5u.com熱心網友回復:
您可以使用它getSession來處理服務器端身份驗證。
檢查參考以獲取更多資源鏈接
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
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362497.html
標籤:javascript 反应 MongoDB 下一个.js 服务器端渲染
上一篇:簡單的條形圖和軸并排。SVG圖形
