diff options
Diffstat (limited to 'pages/lib/mongodb.js')
| -rw-r--r-- | pages/lib/mongodb.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/pages/lib/mongodb.js b/pages/lib/mongodb.js new file mode 100644 index 0000000..dbbf0dc --- /dev/null +++ b/pages/lib/mongodb.js @@ -0,0 +1,30 @@ +// This approach is taken from https://github.com/vercel/next.js/tree/canary/examples/with-mongodb +import { MongoClient } from "mongodb"; + +if (!process.env.MONGODB_URI) { + throw new Error('Invalid/Missing environment variable: "MONGODB_URI"'); +} + +const uri = process.env.MONGODB_URI; +const options = {}; + +let client; +let clientPromise; + +if (process.env.NODE_ENV === "development") { + // In development mode, use a global variable so that the value + // is preserved across module reloads caused by HMR (Hot Module Replacement). + if (!global._mongoClientPromise) { + client = new MongoClient(uri, options); + global._mongoClientPromise = client.connect(); + } + clientPromise = global._mongoClientPromise; +} else { + // In production mode, it's best to not use a global variable. + client = new MongoClient(uri, options); + clientPromise = client.connect(); +} + +// Export a module-scoped MongoClient promise. By doing this in a +// separate module, the client can be shared across functions. +export default clientPromise; |