โ€ฃ day-6

Perform CRUD operations on MongoDB.

Hereโ€™s a simple full example of CRUD operations (Create - POST, Read - GET, Update - PUT, Delete - DELETE) using Node.js + Express + MongoDB (Mongoose).

๐Ÿ› ๏ธ Full CRUD with Node.js + Express + MongoDB (Mongoose)

๐Ÿ“ Project Structure

crud-app/
โ”œโ”€โ”€ models/
โ”‚   โ””โ”€โ”€ user.js
โ”œโ”€โ”€ routes/
โ”‚   โ””โ”€โ”€ userRoutes.js
โ”œโ”€โ”€ server.js
โ”œโ”€โ”€ .env
โ””โ”€โ”€ package.json

๐Ÿ“ฆ Install Dependencies

mkdir crud-app && cd crud-app
npm init -ynpm install express mongoose dotenv

๐Ÿ“„ .env

PORT=5000
MONGO_URI=mongodb://localhost:27017/crud-example

๐Ÿ“˜ User Model (models/user.js)

const mongoose = require("mongoose");

const userSchema = new mongoose.Schema({
  name: {
    type: String,    required: true,  },  
    email: {
    type: String,    required: true,    unique: true,  },  
    age: Number,}, { timestamps: true });
 
 module.exports = mongoose.model("User", userSchema);

๐Ÿš Routes (routes/userRoutes.js)

const express = require("express");
const router = express.Router();
const User = require("../models/user");

router.post("/users", async (req, res) => {
  try {
    const newUser = new User(req.body);    
    const saved = await newUser.save();    
    res.status(201).json(saved);  
    } catch (err) {
    res.status(400).json({ error: err.message });  }
});

router.get("/users", async (req, res) => {
  try {
    const users = await User.find();    
    res.json(users);  } catch (err) {
    
    res.status(500).json({ error: err.message }); 
     }
});

router.get("/users/:id", async (req, res) => {
  try {
    const user = await User.findById(req.params.id);    
    if (!user) return res.status(404).json({ error: "User not found" });   
     res.json(user);  } catch (err) {
    res.status(500).json({ error: err.message });  
    }
});

router.put("/users/:id", async (req, res) => {
  try {
    const updated = await User.findByIdAndUpdate(req.params.id, 
    req.body, {
      new: true,      runValidators: true,    });    
      if (!updated) 
      return res.status(404).json({ error: "User not found" });  
        
      res.json(updated);  } catch (err) {
      
    res.status(400).json({ error: err.message }); 
     }
});

router.delete("/users/:id", async (req, res) => {
  try {
    const deleted = await User.findByIdAndDelete(req.params.id);    
    if (!deleted) return res.status(404).json({ error: "User not found" });   
     res.json({ message: "User deleted successfully" }); 
      } catch (err) {
    res.status(500).json({ error: err.message }); 
     }
     
});module.exports = router;

๐Ÿš€ Server (server.js)

const express = require("express");
const mongoose = require("mongoose");
const dotenv = require("dotenv");
const userRoutes = require("./routes/userRoutes");dotenv.config();

const app = express();
app.use(express.json());
app.use("/api", userRoutes);

mongoose.connect(process.env.MONGO_URI, {
  useNewUrlParser: true,  useUnifiedTopology: true})
.then(() => {
  console.log("Connected to MongoDB");  
  
  app.listen(process.env.PORT, () => {
    console.log(`Server running at <http://localhost>:${process.env.PORT}`);  });})
.catch(err => console.error("DB connection error:", err));

๐Ÿ“ฎ Example Requests

โœ… POST - Create User

POST <http://localhost:5000/api/users>
Content-Type: application/json

{
  "name": "John Doe",
  "email": "john@example.com",
  "age": 30
}

๐Ÿ“– GET - All Users