【问题标题】:How to connect to mongodb database using Nextjs?如何使用 Nextjs 连接到 mongodb 数据库?
【发布时间】: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,不过我觉得没什么特别的吧?

【问题讨论】:

    标签: mongodb next.js


    【解决方案1】:

    你可以这样做:

    const dbClient = await client;
    const db = dbClient.db('db-name');
    const collection = db.collection('collection-name');
    // example to get all docs in collection
    const allDocs = await collection.findOne({query:""}, {...options})
    

    【讨论】:

      猜你喜欢
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 1970-01-01
      • 2023-02-12
      • 2015-10-08
      • 1970-01-01
      相关资源
      最近更新 更多