Lesson 34 +10 XP

MongoDB & Mongoose Integration

Connecting Express to MongoDB with Mongoose

Mongoose is an Object Data Modeling (ODM) library for MongoDB and Node.js. It manages relationships, schema validation, and database queries.

1. Connecting to Database

const mongoose = require("mongoose");

async function connectDB() {
  try {
    const conn = await mongoose.connect(process.env.MONGODB_URL);
    console.log(`MongoDB Connected: ${conn.connection.host}`);
  } catch (err) {
    console.error("Database connection failed:", err.message);
    process.exit(1);
  }
}

2. Defining Schema & Model

const userSchema = new mongoose.Schema({
  name: { type: String, required: [true, "Name is required"], trim: true },
  email: { type: String, required: true, unique: true, lowercase: true },
  role: { type: String, enum: ["user", "admin"], default: "user" },
  createdAt: { type: Date, default: Date.now }
});

const User = mongoose.model("User", userSchema);

3. Querying Models in Express Routes

// Create new document
app.post("/api/users", async (req, res) => {
  const newUser = await User.create(req.body);
  res.status(201).json({ status: "success", data: newUser });
});

// Query documents
app.get("/api/users", async (req, res) => {
  const users = await User.find({ role: "user" }).select("-__v");
  res.status(200).json({ status: "success", results: users.length, data: users });
});

TL;DR

  • Use mongoose.connect(url) to establish a connection pool.
  • Define schemas with validation rules to enforce data integrity.
  • Use Mongoose model methods (create, find, findByIdAndUpdate, deleteOne).