Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

dbHelpers.ts 1.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { MongoClient } from 'mongodb';
  2. import mongoose from 'mongoose';
  3. export async function connectToDatabase() {
  4. const client = await MongoClient.connect(process.env.MONGODB_URI!);
  5. return client;
  6. }
  7. declare global {
  8. var mongoose: any;
  9. }
  10. const MONGODB_URI = process.env.MONGODB_URI;
  11. if (!MONGODB_URI) {
  12. throw new Error(
  13. 'Please define the MONGODB_URI environment variable inside .env.local'
  14. );
  15. }
  16. /**
  17. * Global is used here to maintain a cached connection across hot reloads
  18. * in development. This prevents connections growing exponentially
  19. * during API Route usage.
  20. */
  21. let cached = global.mongoose;
  22. if (!cached) {
  23. cached = global.mongoose = { conn: null, promise: null };
  24. }
  25. async function dbConnect() {
  26. if (cached.conn) {
  27. return cached.conn;
  28. }
  29. if (!cached.promise) {
  30. const opts = {
  31. bufferCommands: false,
  32. };
  33. cached.promise = mongoose.connect(MONGODB_URI!, opts).then((mongoose) => {
  34. return mongoose;
  35. });
  36. }
  37. cached.conn = await cached.promise;
  38. return cached.conn;
  39. }
  40. export default dbConnect;