Node.js Lesson 13: Databases with MongoDB

🟢 Node.js CourseLesson 13 of 15 · 87% complete

Most Node.js apps use a database. MongoDB with Mongoose is the most popular choice for Node.js beginners — it stores data as JSON-like documents, familiar to JavaScript developers.

Setup

# Free MongoDB: mongodb.com/atlas (cloud)
# Or install locally: mongodb.com/downloads

npm install mongoose

Connecting and Defining a Schema

const mongoose = require("mongoose");

// Connect
mongoose.connect(process.env.DB_URL)
  .then(() => console.log("MongoDB connected"))
  .catch(err => console.error("DB Error:", err));

// Schema: defines the shape of documents
const userSchema = new mongoose.Schema({
  name: { type: String, required: true, trim: true },
  email: { type: String, required: true, unique: true, lowercase: true },
  age: { type: Number, min: 0, max: 120 },
  role: { type: String, enum: ["user","admin"], default: "user" },
  createdAt: { type: Date, default: Date.now }
});

// Model: used to query the database
const User = mongoose.model("User", userSchema);

CRUD Operations

// CREATE
const user = new User({ name: "Alice", email: "alice@example.com" });
await user.save();
// or:
const user2 = await User.create({ name: "Bob", email: "bob@example.com" });

// READ
const all = await User.find();
const one = await User.findById(id);
const filtered = await User.find({ role: "admin" }).limit(10).sort({ name: 1 });

// UPDATE
await User.findByIdAndUpdate(id, { name: "Alice Smith" }, { new: true });

// DELETE
await User.findByIdAndDelete(id);

🏋️ Practice Task

Build a Users API backed by MongoDB. Schema: name (required), email (required, unique), age, bio. CRUD endpoints at /api/users. Add search: GET /api/users?name=alice should search by name (case-insensitive).

💡 Hint: For case-insensitive search: User.find({ name: { $regex: req.query.name, $options: “i” } })

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *