Master backend development with our comprehensive guide covering Node.js, Express.js, and MongoDB. Learn through practical examples and build production-ready applications.
Learn how to set up a complete backend project using Node.js, Express.js, and MongoDB. This guide covers project initialization, dependencies, and basic configuration.
// Initialize project
npm init -y
// Install dependencies
npm install express mongoose dotenv cors
// Create server.js
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
require('dotenv').config();
const app = express();
// Middleware
app.use(cors());
app.use(express.json());
// Connect to MongoDB
mongoose.connect(process.env.MONGODB_URI)
.then(() => console.log('MongoDB connected'))
.catch(err => console.error('MongoDB connection error:', err));
app.listen(3000, () => {
console.log('Server running on port 3000');
});
Basic setup for a Node.js backend with Express and MongoDB
Build a complete REST API with Express.js, including route handling, middleware implementation, and MongoDB integration.
// 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
});
module.exports = mongoose.model('User', userSchema);
// Routes (routes/users.js)
const router = express.Router();
const User = require('../models/User');
// Get all users
router.get('/users', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// Create user
router.post('/users', async (req, res) => {
const user = new User(req.body);
try {
const newUser = await user.save();
res.status(201).json(newUser);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
Creating a RESTful API with Express.js and MongoDB
Implement user authentication and authorization using JSON Web Tokens (JWT) in your Node.js application.
// Install JWT
npm install jsonwebtoken
// Auth Middleware
const jwt = require('jsonwebtoken');
const auth = (req, res, next) => {
try {
const token = req.header('Authorization').replace('Bearer ', '');
const decoded = jwt.verify(token, process.env.JWT_SECRET);
req.userId = decoded.id;
next();
} catch (err) {
res.status(401).json({ message: 'Please authenticate' });
}
};
// Login Route
router.post('/login', async (req, res) => {
try {
const user = await User.findOne({ email: req.body.email });
if (!user) {
return res.status(401).json({ message: 'Login failed' });
}
const token = jwt.sign({ id: user._id }, process.env.JWT_SECRET);
res.json({ token });
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// Protected Route
router.get('/profile', auth, async (req, res) => {
try {
const user = await User.findById(req.userId);
res.json(user);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
Implementing JWT authentication in a Node.js application