javascript - 如何访问 MongoDB 使用 NextAuth 创建的默认 ObjectId
问题描述
我想将数据推送到当前登录用户的 MongoDB 文档。
据我了解,当您使用 Twitter 登录(例如)时,Next Auth 会为该登录创建一个新的:用户、帐户和会话。使用 useSession() 挂钩,您可以访问用户的电子邮件、图像和名称,但不能访问 MongoDB 为您创建的 ObjectId。
这对我来说是个问题,因为我需要向我的服务器发出使用当前登录用户的 _id 值作为 PUT 请求 URL 的请求。我想使用 _id 值 mongo 为您提供而不是添加一个像 uuid 之类的东西。
有没有办法做到这一点?
解决方案
我最近遇到了这个问题,发现使用 [...nextauth].js 中的回调选项可以修改发送回客户端的内容。
我的 [...nextauth].js 的一部分:
export default async function auth(req, res) {
return await NextAuth(req, res, {
adapter: MongoDBAdapter({
db: (await clientPromise).db("myFirstDatabase"),
}),
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
}),
],
callbacks: {
async signIn({ user, account, profile, email, credentials }) {
return true;
},
async session({ session, token, user }) {
session.user._id = user.id;
return session;
},
},
});
异步会话函数将返回存储在您的数据库中的用户对象,因此您可以将 id 添加到会话的用户对象中。
我现在可以像以前一样使用会话挂钩访问它,但这次可以访问 _id。
<div>{session.user._id}</div>
这是 NextAuth 站点的链接,它更深入地介绍了会话的力量:NextAuth
推荐阅读
- javascript - 多次调用reactjs组件
- google-apps-script - 如何使用 Stackdriver Logging API 获取日志
- javascript - 如何对以 const 和一堆 var 开头的 JavaScript 进行非混淆处理
- python - 使用 Selenium 向下滚动直到不可见元素变为可见
- python-3.x - 如何打印某个整数返回的次数之和?
- python - Python 诅咒 update_panels() 和 Panel.move() 问题
- python - 词向量的 np.average
- arrays - 删除第一列值重复的二维数组的元素(Swift)
- mysql - 如何将 QT 5.14.1 连接到 MYSQL 数据库?
- android - react-native hello world app - 在模拟器中工作但不在物理设备中