How to use a controller module — Intermediate
Supplementary examples
Thin controller calling a service
async function list(req, res, next) {
try {
const pastes = await service.listByUser(req.params.userId);
res.json({ data: pastes });
} catch (err) {
next(err);
}
}Set status for create
async function create(req, res, next) {
try {
const paste = await service.create(req.body);
res.status(201).json({ data: paste });
} catch (err) {
next(err);
}
}Course example
// pastes.controller.js — HTTP in/out; calls service for data
const service = require("./pastes.service");
async function list(req, res, next) {
try {
const pastes = await service.list(req.params.userId);
res.json({ data: pastes });
} catch (err) {
next(err);
}
}
async function create(req, res, next) {
try {
const paste = await service.create(req.params.userId, req.body);
res.status(201).json({ data: paste });
} catch (err) {
next(err);
}
}
module.exports = { list, create };
Additional references & examples
- Express.js guide
Routing, middleware order, and request/response lifecycle.
- Thinkful — Node, Express, Postgres starter
Starter repo used across Knex and Express lessons.