2021-08-10 14:50:08 +00:00
|
|
|
import { MongoClient } from "mongodb"
|
|
|
|
|
|
|
|
const { MONGODB_URI, MONGODB_DB, MONGODB_COLLECTION } = process.env
|
|
|
|
|
|
|
|
let cached = global.mongo
|
|
|
|
|
|
|
|
if (!cached) {
|
|
|
|
cached = global.mongo = { conn: null, promise: null }
|
|
|
|
}
|
|
|
|
|
|
|
|
export default async function connectToDatabase() {
|
|
|
|
if (cached.conn) {
|
|
|
|
return cached.conn
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!cached.promise) {
|
|
|
|
const opts = {
|
|
|
|
useNewUrlParser: true,
|
|
|
|
useUnifiedTopology: true,
|
|
|
|
}
|
|
|
|
|
|
|
|
cached.promise = await MongoClient.connect(MONGODB_URI, opts).then(client => {
|
|
|
|
return {
|
|
|
|
client,
|
|
|
|
coll: client.db(MONGODB_DB).collection(MONGODB_COLLECTION),
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
cached.conn = await cached.promise
|
2021-08-11 20:22:16 +00:00
|
|
|
|
2021-08-10 14:50:08 +00:00
|
|
|
return cached.conn
|
|
|
|
}
|