Open In App

Mongoose Connections

A Mongoose connection is a Node.js module that establishes and manages connections between a Node.js application and a MongoDB database. It optimizes resource utilization, handles connection pooling, and manages errors, facilitating efficient data operations.

Why do we need Mongoose Connections?

Steps to Establishing Mongoose Connections

npm install mongoose
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydatabase', {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
console.log('Connected to MongoDB');
})
.catch((error) => {
console.error('Error connecting to MongoDB:', error);
});
const db = mongoose.connection;

db.on('error', (error) => {
console.error('MongoDB connection error:', error);
});

db.once('open', () => {
console.log('Connected to MongoDB');
});

db.on('disconnected', () => {
console.log('Disconnected from MongoDB');
});
process.on('SIGINT', () => {
mongoose.connection.close(() => {
console.log('Mongoose connection is disconnected due to application termination');
process.exit(0);
});
});

Connection Events and Error Handling

Connection Events in mongoose: In Mongoose, connection events play an important role in monitoring and controlling the interaction between your Node.js application and MongoDB databases. Key connection events include:



Example:




const mongoose = require('mongoose');
 
// MongoDB connection URL
const mongoURI = 'mongodb://localhost/mydatabase';
 
// Connection options
const options = {
    useNewUrlParser: true,
    useUnifiedTopology: true,
};
 
// Establish the connection
mongoose.connect(mongoURI, options)
    .then(() => {
        console.log('Connected to MongoDB');
    })
    .catch((error) => {
        console.error('Error connecting to MongoDB:', error.message);
 
        // Handle specific error conditions
        if (error.name === 'MongoNetworkError') {
            console.error('Network error occurred. Check your MongoDB server.');
        } else if (error.name === 'MongooseServerSelectionError') {
            console.error('Server selection error. Ensure'
                + ' MongoDB is running and accessible.');
        } else {
            // Handle other types of errors
            console.error('An unexpected error occurred:', error);
        }
    });
 
// Handling connection events
const db = mongoose.connection;
 
db.on('error', (error) => {
    console.error('MongoDB connection error:', error);
});
 
db.once('open', () => {
    console.log('Connected to MongoDB');
});
 
db.on('disconnected', () => {
    console.log('Disconnected from MongoDB');
});
 
// Gracefully close the connection when the application exits
process.on('SIGINT', () => {
    mongoose.connection.close(() => {
        console.log('Mongoose connection is disconnected'
         + ' due to application termination');
        process.exit(0);
    });
});

Specific functions used in Mongoose

Creating a Connection

To open a connection to your MongoDB database using Mongoose, you typically do this at the beginning of your Node.js application. You need to specify the MongoDB URI, which includes information about the database server and authentication details.

const mongoose = require('mongoose');

// MongoDB URI
const dbURI = 'mongodb://localhost/mydatabase';

// Connect to MongoDB
mongoose.connect(dbURI, { useNewUrlParser: true, useUnifiedTopology: true });

// Event handling for successful connection
mongoose.connection.on('connected', () => {
console.log('Mongoose connected to ' + dbURI);
});

// Event handling for connection error
mongoose.connection.on('error', (err) => {
console.error('Mongoose connection error: ' + err);
});

// Event handling when the connection is disconnected
mongoose.connection.on('disconnected', () => {
console.log('Mongoose disconnected');
});

Closing a Connection

Closing the connection is important when your Node.js application is shutting down or when the database connection is no longer needed. You can use mongoose.connection.close() to close the connection.



// Close the Mongoose connection when the Node.js process exits
process.on('SIGINT', () => {
mongoose.connection.close(() => {
console.log('Mongoose connection closed through app termination');
process.exit(0);
});
});

// Or you can close the connection
//explicitly when you're done with it
// mongoose.connection.close();

Article Tags :