【发布时间】:2022-01-05 22:58:32
【问题描述】:
请我将 MongoDB 数据库用于我的下一个应用程序,这是我 Bootcamp 的最终项目,并且由于我总是收到 mongoclient not connected 错误,因此这个错误阻止了我对我的数据库进行查询。
我正在使用猫鼬,并且在升级到最新的 mui(材料 UI)后开始出现此错误,因为这就是我用于此应用程序的内容。从昨天开始,我一直在尝试修复这个错误,因为我认为这是我可以处理的,但直到现在它仍然存在。它已经从这个mongoose MongoNotConnectedError: MongoClient must be connected to perform this operation and this one MongoExpiredSessionError:无法使用已结束的会话开始,并且它发生在每个单击向数据库发出请求的按钮上。
下面是我用来通过 mongoose 连接到 MongoDB 的代码:
import mongoose from 'mongoose';
const connection = {};
async function connect() {
if (connection.isConnected) {
console.log('already connected');
return;
}
if (mongoose.connections.length > 0) {
connection.isConnected = mongoose.connections[0].readyState;
if (connection.isConnected === 1) {
console.log('use previous connection');
return;
}
await mongoose.disconnect();
}
const db = await mongoose.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log('new connection');
connection.isConnected = db.connections[0].readyState;
}
async function disconnect() {
if (connection.isConnected) {
if (process.env.NODE_ENV === 'production') {
await mongoose.disconnect();
connection.isConnected = false;
} else {
console.log('not disconnect');
}
}
}
function convertDocToObj(doc) {
doc._id = doc._id.toString();
doc.createdAt = doc.createdAt.toString();
doc.updatedAt = doc.updatedAt.toString();
return doc;
}
const db = { connect, disconnect, convertDocToObj };
export default db;
如果有人能帮我解决这个问题,我将非常感激。我不知道是什么原因造成的,也不知道它是从哪里来的,因为我已经尽我所能,但无济于事 谢谢
【问题讨论】:
标签: node.js database mongodb mongoose