Loading lessons...
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).