task 9
Wed Apr 23 2025 01:43:14 GMT+0000 (Coordinated Universal Time)
Saved by @cciot
Task 9: Working with Express & MongoDB to create an Express server with CRUD endpoints for a Users collection using Mongoose.
---
✅ Step 1: Project Setup
mkdir express-mongo-users
cd express-mongo-users
npm init -y
npm install express mongoose dotenv
✅ Step 2: Folder Structure
express-mongo-users/
├── models/
│ └── User.js
├── routes/
│ └── userRoutes.js
├── .env
├── server.js
✅ Step 3: Create .env File
PORT=5000
MONGO_URI=mongodb://localhost:27017/yourdbname
> Replace yourdbname with your actual MongoDB database name.
✅ Step 4: Mongoose 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);
✅ Step 5: User Routes – routes/userRoutes.js
const express = require('express');
const router = express.Router();
const User = require('../models/User');
// Create User
router.post('/', async (req, res) => {
try {
const user = await User.create(req.body);
res.status(201).json(user);
} catch (err) {
res.status(400).json({ error: err.message });
}
});
// Get All Users
router.get('/', async (req, res) => {
const users = await User.find();
res.json(users);
});
// Get Single User
router.get('/: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(400).json({ error: err.message });
}
});
// Update User
router.put('/:id', async (req, res) => {
try {
const user = await User.findByIdAndUpdate(req.params.id, req.body, { new: true });
if (!user) return res.status(404).json({ error: 'User not found' });
res.json(user);
} catch (err) {
res.status(400).json({ error: err.message });
}
});
// Delete User
router.delete('/:id', async (req, res) => {
try {
const result = await User.findByIdAndDelete(req.params.id);
if (!result) return res.status(404).json({ error: 'User not found' });
res.json({ message: 'User deleted successfully' });
} catch (err) {
res.status(400).json({ error: err.message });
}
});
module.exports = router;
✅ Step 6: Server File – 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());
// Connect to MongoDB
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log('MongoDB connected'))
.catch((err) => console.error('MongoDB connection error:', err));
// Routes
app.use('/api/users', userRoutes);
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
✅ Step 7: Run the Server
node server.js
✅ Sample API Endpoints (use Postman or curl):
POST /api/users – Create a user
GET /api/users – Get all users
GET /api/users/:id – Get user by ID
PUT /api/users/:id – Update user
DELETE /api/users/:id – Delete user



Comments