【发布时间】:2022-07-18 20:09:39
【问题描述】:
尝试在最新版本的 Nextjs 中连接到我的 mongodb 数据库。事情发生了很大的变化,所以我不再知道该怎么办了。
这里有一个如何设置连接的例子:https://github.com/vercel/next.js/tree/canary/examples/with-mongodb
他们使用这个文件:
//The mongodb.js file from the example
import { MongoClient } from 'mongodb'
const uri = process.env.MONGODB_URI
const options = {}
let client
let clientPromise
if (!process.env.MONGODB_URI) {
throw new Error('Please add your Mongo URI to .env.local')
}
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
但是,他们忘记添加实际使用方法。我什至无法弄清楚。
//pages/api/user.js
import client from '/lib/mongodb.js'
export default async function handler(req, res) {
//How do I connect here?
}
还有两个额外的问题:
- 我曾经对我的数据库连接进行缓存。不再需要了吗?
-
utils文件夹发生了什么事?它曾经很特别,因为它没有向客户发送任何东西。现在好像大家都在用lib,不过我觉得没什么特别的吧?
【问题讨论】: