adopt to mongodb adapter changes

This commit is contained in:
Thomas Ruoff
2021-12-08 23:01:40 +01:00
committed by Thomas Ruoff
parent 7196bd2e91
commit 893896cf31
2 changed files with 16 additions and 6 deletions

View File

@@ -5,16 +5,18 @@ import { BOOKING_STATUS } from './enums'
let connectedPromise: Promise<mongoose.Mongoose> let connectedPromise: Promise<mongoose.Mongoose>
const MONGODB_OPTIONS = {
useCreateIndex: true,
useNewUrlParser: true,
useUnifiedTopology: true,
}
export function connect(): Promise<mongoose.Mongoose> { export function connect(): Promise<mongoose.Mongoose> {
if (connectedPromise) { if (connectedPromise) {
return connectedPromise return connectedPromise
} }
connectedPromise = mongoose.connect(process.env.MONGO_URI, { connectedPromise = mongoose.connect(process.env.MONGO_URI, MONGODB_OPTIONS)
useCreateIndex: true,
useNewUrlParser: true,
useUnifiedTopology: true,
})
return connectedPromise return connectedPromise
} }

View File

@@ -5,13 +5,21 @@ import EmailProvider from "next-auth/providers/email"
import { MongoDBAdapter } from "@next-auth/mongodb-adapter" import { MongoDBAdapter } from "@next-auth/mongodb-adapter"
import { connect } from "../../../db" import { connect } from "../../../db"
import { Mongoose } from 'mongoose'; import { Mongoose } from 'mongoose';
import type { MongoClient } from "mongodb";
let mongooseConnection: Mongoose; let mongooseConnection: Mongoose;
async function getMongoClient() {
const mongoose: Mongoose = await connect();
const mongoDatabase: unknown = mongoose.connection.db;
return mongoDatabase as MongoClient;
}
export default async function auth(req: NextApiRequest, res: NextApiResponse) { export default async function auth(req: NextApiRequest, res: NextApiResponse) {
return await NextAuth(req, res, { return await NextAuth(req, res, {
secret: process.env.NEXTAUTH_SECRET, secret: process.env.NEXTAUTH_SECRET,
adapter: MongoDBAdapter({ db: (await connect()).connection.db }), adapter: MongoDBAdapter(getMongoClient()),
providers: [ providers: [
EmailProvider({ EmailProvider({
server: { server: {