Handling Query Error
First, start your MongoDB database, and then we’ll connect to MongoDB in the Express server. We’ll start by posting data to a database named “my_database.”
Before starting the server start the MongoDB and after succesful setup start the server and make a get request with the following url.
localhost:3001/api/retrieveData
// index.js
import express from "express";
import connectDB from "./db.js";
import errorHandler from "./middlewares/errorhandler.js";
import corsMiddleware from "./middlewares/cors.js";
import router from "./route/gfgroutes.js";
const app = express();
// Middleware
app.use(express.json());
app.use(corsMiddleware);
// Routes
app.use("/api", router);
app.get("/", (req, res) => {
res.send("Welcome to the server");
});
// Error Handling Middleware
app.use(errorHandler);
// Start the server
const PORT = process.env.PORT || 3001;
connectDB()
.then(() => {
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
})
.catch((err) => {
console.error("Failed to start server:", err);
});
// db.js
import mongoose from "mongoose";
const connectDB = async () => {
try {
await mongoose.connect("mongodb://127.0.0.1:27017/my_database", {});
console.log("MongoDB connected");
} catch (error) {
console.error("MongoDB connection error:", error);
throw new Error("Unable to connect to the database");
}
};
export default connectDB;
// route/gfgRoutes.js
import express from "express";
import { createDummyData, retrieveData }
from "../controller/gfgcontroller.js";
const router = express.Router();
router.post("/", createDummyData);
router.get("/retrieveData", retrieveData);
export default router;
// models/gfgModel.js
import mongoose from "mongoose";
const gfgSchema = new mongoose.Schema({
name: String,
email: String,
});
const GfgModel = mongoose.model("gfg", gfgSchema);
export default GfgModel;
// middlewares/errorhandler.js
const errorHandler = (err, req, res, next) => {
console.error(err.stack);
res.status(500).send("Something broke!");
};
export default errorHandler;
// middlewares/cors.js
import cors from "cors";
const corsOptions = {
origin: "*",
};
const corsMiddleware = cors(corsOptions);
export default corsMiddleware;
// middlewares/cors.js
import cors from "cors";
const corsOptions = {
origin: "*",
};
const corsMiddleware = cors(corsOptions);
export default corsMiddleware;
import GfgModel from "../models/gfgModel.js";
// Store a dummy record
export const createDummyData = async (req, res) => {
try {
const dummyData = await GfgModel.create({
name: "John Doe",
email: "johndoe@example.com",
});
console.log("Dummy data stored in MongoDB:", dummyData);
res.sendStatus(200);
} catch (error) {
console.error("Error storing dummy data in MongoDB:", error);
res.status(500).send("Error storing dummy data in MongoDB");
}
};
// Retrieve data from MongoDB
export const retrieveData = async (req, res) => {
try {
const data = await GfgModel.find({ name: "John Doe" });
if (!data || data.length === 0) {
throw new Error("Data not found or query returned empty result");
}
console.log("Retrieved data from MongoDB:", data);
res.json(data);
} catch (error) {
console.error("Error retrieving data from MongoDB:", error);
res.status(500).send("Error retrieving data from MongoDB");
}
};
Now querying to the get method for the route “/retrieveData” we get the following error.
Querying with existing fields to the database results in the following output:
How to Handle Errors in MongoDB Operations using NodeJS?
Handling errors in MongoDB operations is important for ensuring the stability and reliability of your Node.js application. In this article, we’ll dive deep into error-handling techniques specifically for MongoDB operations in Node.js. We’ll cover topics such as error types, error-handling strategies, and best practices for handling errors effectively.