使用单例模式的猫鼬连接
Mongoose 连接文件 - db.js
//Import the mongoose module
const mongoose = require('mongoose');
class Database { // Singleton
connection = mongoose.connection;
constructor() {
try {
this.connection
.on('open', console.info.bind(console, 'Database connection: open'))
.on('close', console.info.bind(console, 'Database connection: close'))
.on('disconnected', console.info.bind(console, 'Database connection: disconnecting'))
.on('disconnected', console.info.bind(console, 'Database connection: disconnected'))
.on('reconnected', console.info.bind(console, 'Database connection: reconnected'))
.on('fullsetup', console.info.bind(console, 'Database connection: fullsetup'))
.on('all', console.info.bind(console, 'Database connection: all'))
.on('error', console.error.bind(console, 'MongoDB connection: error:'));
} catch (error) {
console.error(error);
}
}
async connect(username, password, dbname) {
try {
await mongoose.connect(
`mongodb+srv://${username}:${password}@cluster0.2a7nn.mongodb.net/${dbname}?retryWrites=true&w=majority`,
{
useNewUrlParser: true,
useUnifiedTopology: true
}
);
} catch (error) {
console.error(error);
}
}
async close() {
try {
await this.connection.close();
} catch (error) {
console.error(error);
}
}
}
module.exports = new Database();
从 app.js 调用连接
const express = require("express"); // Express Server Framework
const Database = require("./utils/db");
const app = express();
Database.connect("username", "password", "dbname");
module.exports = app;