MongoNotConnectedError:在生产中运行操作之前必须连接客户端

编程入门 行业动态 更新时间:2024-10-04 09:30:13

MongoNotConnectedError:在生产中运行操作之前必须连接<a href=https://www.elefans.com/category/jswz/34/1771403.html style=客户端"/>

MongoNotConnectedError:在生产中运行操作之前必须连接客户端

import mongoose from "mongoose";

let connection = {};

async function connect() {
  try {
    if (connection.isConnected) {
      console.log('Connected');
      return;
    }
    if (mongoose.connections.length > 0) {
      connection.isConnected = mongoose.connections[0].readyState;
      if (connection.isConnected === 1) {
        console.log("Previous Connection Established");
        return;
      }
      await mongoose.disconnect();
    }
    const db = await mongoose.connect(process.env.MONGODB_URI);
    console.log("New Connection");
    connection.isConnected = db.connections[0].readyState;
  } catch (error) {
    console.error("Error connecting to database:", error);
    process.exit(1);
  }
}

async function disconnect() {
  if (connection.isConnected) {
    if (process.env.NODE_ENV === "production") {
      await mongoose.disconnect();
      connection.isConnected = false;
    } else {
      console.log("Still Connected");
    }
  }
}

const db = { connect, disconnect };
export default db;

这是我在 nextjs 和猫鼬中使用的数据库函数,但不断收到此错误。 我尝试了很多解决方案,但这个错误一直存在。

export async function getServerSideProps() {
  await db.connect();
  const products = await Product.find().lean();
  await db.disconnect();
  return {
    props: {
      Products: JSON.parse(JSON.stringify(products)),
    },
  };
}

这就是我调用 mongodb 函数的方式

请告诉我哪里错了或如何解决。

我尝试使用 digitalocean 集成的 mongodb 服务器,但他们没有抛出这个错误。 Mongodb官网集群出现了这个问题。 我正在使用 mongodb 无服务器实例,每次都会收到此错误。请帮我解决这个问题。

回答如下:

打开/关闭连接是昂贵的操作,你不需要每次都关闭连接,除非应用程序正在关闭。

Mongoose 模块是一个为你处理连接池的单例实例,所以你可以在你的模块中导入和共享它。


  import mongoose from 'mongoose';

  async function init() {
    try {
      await mongoose.connect(process.env.MONGO_URI); //set your connection string
    } catch (err) {
      //if connection was not successfull, shutdown app
      process.exit(1);
    }
  }

  async function App() {
    const connection =  await db.init();
    const User = mongoose.model('User');
    const user = await User.findOne().exec();
    console.log(user);
  }

更多推荐

MongoNotConnectedError:在生产中运行操作之前必须连接客户端

本文发布于:2024-05-30 21:34:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770947.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:客户端   操作   MongoNotConnectedError

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!