Lesson 34 +10 XP

MongoDB & Mongoose Integration

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


javascript
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


javascript
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


javascript
// 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).