You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

dbHelpers.js 1022B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. const MONGODB_URI = process.env.MONGODB_URI;
  8. if (!MONGODB_URI) {
  9. throw new Error(
  10. 'Please define the MONGODB_URI environment variable inside .env.local'
  11. );
  12. }
  13. /**
  14. * Global is used here to maintain a cached connection across hot reloads
  15. * in development. This prevents connections growing exponentially
  16. * during API Route usage.
  17. */
  18. let cached = global.mongoose;
  19. if (!cached) {
  20. cached = global.mongoose = { conn: null, promise: null };
  21. }
  22. async function dbConnect() {
  23. if (cached.conn) {
  24. return cached.conn;
  25. }
  26. if (!cached.promise) {
  27. const opts = {
  28. bufferCommands: false,
  29. };
  30. cached.promise = mongoose.connect(MONGODB_URI, opts).then((mongoose) => {
  31. return mongoose;
  32. });
  33. }
  34. cached.conn = await cached.promise;
  35. return cached.conn;
  36. }
  37. export default dbConnect;