Rate this post

Trong Express.js, controller là một module hoặc một tập hợp các hàm xử lý các yêu cầu từ người dùng. Nó thường được sử dụng để xử lý logics, xử lý các lỗi, tương tác với cơ sở dữ liệu và trả về kết quả cho người dùng. Một controller có thể bao gồm nhiều hàm xử lý khác nhau cho các route khác nhau. Nó giúp cho code dễ dàng theo dõi và bảo trì hơn.

Các bài viết liên quan:

Ví dụ về controller trong Express.js

Ví dụ sau minh họa cách tạo một controller trong Express.js và sử dụng nó để xử lý yêu cầu từ người dùng:

// userController.js
const User = require('../models/user');

exports.getUsers = (req, res, next) => {
  User.find()
    .then(users => {
      res.render('users', { users: users });
    })
    .catch(err => console.log(err));
};

exports.getUser = (req, res, next) => {
  const userId = req.params.userId;
  User.findById(userId)
    .then(user => {
      res.render('user', { user: user });
    })
    .catch(err => console.log(err));
};

exports.createUser = (req, res, next) => {
  const name = req.body.name;
  const email = req.body.email;
  const newUser = new User({ name: name, email: email });
  newUser
    .save()
    .then(user => {
      res.redirect('/users');
    })
    .catch(err => console.log(err));
};
// app.js
const express = require('express');
const userController = require('./controllers/userController');

const app = express();

app.get('/users', userController.getUsers);
app.get('/user/:userId', userController.getUser);
app.post('/user', userController.createUser);

Trong ví dụ trên, chúng ta đã tạo ra một controller tên là userController.js với 3 hàm xử lý getUsers, getUser và createUser. Rồi chúng ta sử dụng các hàm này trong file app.js để xử lý các yêu cầu từ người dùng.

  • app.get('/users', userController.getUsers);: lắng nghe yêu cầu GET tại route /users và gọi hàm getUsers để xử lý
  • app.get('/user/:userId', userController.getUser);: lắng nghe yêu cầu GET tại route /user/:userId và gọi hàm getUser để xử lý
  • app.post('/user', userController.createUser);: lắng nghe yêu cầu POST tại route /user và gọi

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now