存储用户数据 - NextAuth v3 MongoDB
Storing User data - NextAuth v3 with MongoDB
在我的 NextJS 应用程序中,我正在尝试使用 MongoDB 来存储 Next-Auth (v3) 包正在使用的用户数据。
我的 /api/auth/[...nextauth].js
文件中的代码:
import NextAuth from 'next-auth'
import Providers from 'next-auth/providers'
export default NextAuth({
providers: [
Providers.OneLogin({
clientId: process.env.ONELOGIN_CLIENT_ID,
clientSecret: process.env.ONELOGIN_CLIENT_SECRET,
domain: process.env.ONELOGIN_DOMAIN
})
],
callbacks: {
jwt: async (token, user, account, profile, isNewUser) => {
if (user) { //-- if success, store the id of the user in jwt token
token.uid = user.id;
}
return Promise.resolve(token);
},
session: async (session, user) => {
session.user.uid = user.uid; //-- store the id of the user in the session data
return Promise.resolve(session);
}
},
// Optional SQL or MongoDB database to persist users
database: process.env.MONGODB_URL
// database: {
// type: "mongodb",
// useNewUrlParser: true,
// url: process.env.MONGODB_URL,
// },
})
但它总是抛出以下错误:
[next-auth][error][session_error]
https://next-auth.js.org/errors#session_error Error: optional
dependency [mongodb] found but version [4.1.2] did not satisfy
constraint [^3.5.9]
我已经安装了 mongodb
软件包。我无法弄清楚这个问题。我的 MongoDB url 工作正常,因为它能够执行其他数据库操作(如添加新数据、获取等)
问题是 major 版本的依赖项不同并且被认为是中断:"^3.5.9"
将满足 v3 中的更新。您的 4.1.2
版本将被视为超出范围,因为对 4
专业的更改将被视为 significant/breaking。
package.json
"peerOptionalDependencies": {
"mongodb": "^3.5.9",
"mysql": "^2.18.1",
"mssql": "^6.2.1",
"pg": "^8.2.1",
"@prisma/client": "^2.16.1"
},
更新 mongodb
版本以支持主要版本的更改,即 "mongodb": "^3.5.9 || ^4",
或 "mongodb": "^4",
等
"peerOptionalDependencies": {
"mongodb": "^3.5.9 || ^4",
"mysql": "^2.18.1",
"mssql": "^6.2.1",
"pg": "^8.2.1",
"@prisma/client": "^2.16.1"
},
在我的 NextJS 应用程序中,我正在尝试使用 MongoDB 来存储 Next-Auth (v3) 包正在使用的用户数据。
我的 /api/auth/[...nextauth].js
文件中的代码:
import NextAuth from 'next-auth'
import Providers from 'next-auth/providers'
export default NextAuth({
providers: [
Providers.OneLogin({
clientId: process.env.ONELOGIN_CLIENT_ID,
clientSecret: process.env.ONELOGIN_CLIENT_SECRET,
domain: process.env.ONELOGIN_DOMAIN
})
],
callbacks: {
jwt: async (token, user, account, profile, isNewUser) => {
if (user) { //-- if success, store the id of the user in jwt token
token.uid = user.id;
}
return Promise.resolve(token);
},
session: async (session, user) => {
session.user.uid = user.uid; //-- store the id of the user in the session data
return Promise.resolve(session);
}
},
// Optional SQL or MongoDB database to persist users
database: process.env.MONGODB_URL
// database: {
// type: "mongodb",
// useNewUrlParser: true,
// url: process.env.MONGODB_URL,
// },
})
但它总是抛出以下错误:
[next-auth][error][session_error] https://next-auth.js.org/errors#session_error Error: optional dependency [mongodb] found but version [4.1.2] did not satisfy constraint [^3.5.9]
我已经安装了 mongodb
软件包。我无法弄清楚这个问题。我的 MongoDB url 工作正常,因为它能够执行其他数据库操作(如添加新数据、获取等)
问题是 major 版本的依赖项不同并且被认为是中断:"^3.5.9"
将满足 v3 中的更新。您的 4.1.2
版本将被视为超出范围,因为对 4
专业的更改将被视为 significant/breaking。
package.json
"peerOptionalDependencies": {
"mongodb": "^3.5.9",
"mysql": "^2.18.1",
"mssql": "^6.2.1",
"pg": "^8.2.1",
"@prisma/client": "^2.16.1"
},
更新 mongodb
版本以支持主要版本的更改,即 "mongodb": "^3.5.9 || ^4",
或 "mongodb": "^4",
等
"peerOptionalDependencies": {
"mongodb": "^3.5.9 || ^4",
"mysql": "^2.18.1",
"mssql": "^6.2.1",
"pg": "^8.2.1",
"@prisma/client": "^2.16.1"
},