Cach Tao Ung Dung Quan Ly Du An Voi Nodejs Va MongoDB

04/03/2026 P T P Chung 7 phút đọc 0 bình luận

Giới thiệu

Trong bối cảnh công việc ngày càng đòi hỏi sự phối hợp và theo dõi tiến độ chặt chẽ, một ứng dụng quản lý dự án trở thành công cụ không thể thiếu. Với khả năng xử lý bất đồng bộ mạnh mẽ, Node.js kết hợp với MongoDB - một cơ sở dữ liệu NoSQL linh hoạt - tạo nên nền tảng lý tưởng để xây dựng một hệ thống quản lý dự án hoàn chỉnh. Bài viết này sẽ hướng dẫn từng bước tạo ra ứng dụng như vậy, từ thiết lập môi trường cho đến triển khai các tính năng cốt lõi.

Chuẩn bị môi trường phát triển

Để bắt đầu, cần cài đặt Node.js và MongoDB trên máy. Node.js có thể tải từ trang chủ, còn MongoDB có thể cài đặt thông qua trình quản lý gói hoặc chạy dưới dạng dịch vụ. Sau khi hoàn tất, khởi tạo một dự án Node.js mới bằng lệnh:

npm init -y

Tiếp theo, cài đặt các thư viện cần thiết:

npm install express mongoose body-parser cors

Trong đó, Express cung cấp framework web nhẹ nhàng, Mongoose hỗ trợ tương tác với MongoDB, body-parser xử lý dữ liệu JSON từ request, và cors cho phép ứng dụng frontend gọi API từ domain khác.

Thiết kế schema cho dự án

Với MongoDB, dữ liệu được lưu dưới dạng document trong các collection. Với ứng dụng quản lý dự án, có thể xác định ba schema chính: Project, Task và User.

const projectSchema = new mongoose.Schema({
  name: { type: String, required: true },
  description: String,
  status: { type: String, default: 'active' },
  createdAt: { type: Date, default: Date.now }
});

const taskSchema = new mongoose.Schema({ title: { type: String, required: true }, description: String, project: { type: mongoose.Schema.Types.ObjectId, ref: 'Project' }, status: { type: String, default: 'pending' }, dueDate: Date });

const userSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: true } });

Các trường tham chiếu (ObjectId) giúp liên kết giữa project và task, đảm bảo tính toàn vẹn dữ liệu.

Xây dựng API backend

Khởi tạo server

Tạo file server.js để thiết lập server và kết nối MongoDB:

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express(); app.use(bodyParser.json()); app.use(cors());

mongoose.connect('mongodb://localhost:27017/project-management', { useNewUrlParser: true, useUnifiedTopology: true });

app.listen(3000, () => console.log('Server running on port 3000'));

Quảng cáo

300x250 In-Content Advertisement

API cho project

const Project = require('./models/Project');

app.post('/api/projects', async (req, res) => { try { const project = new Project(req.body); await project.save(); res.status(201).json(project); } catch (err) { res.status(400).json({ error: err.message }); } });

app.get('/api/projects', async (req, res) => { try { const projects = await Project.find(); res.json(projects); } catch (err) { res.status(500).json({ error: err.message }); } });

API cho task

const Task = require('./models/Task');

app.post('/api/tasks', async (req, res) => { try { const task = new Task(req.body); await task.save(); res.status(201).json(task); } catch (err) { res.status(400).json({ error: err.message }); } });

app.get('/api/tasks', async (req, res) => { try { const tasks = await Task.find().populate('project'); res.json(tasks); } catch (err) { res.status(500).json({ error: err.message }); } });

API cho user

const User = require('./models/User');

app.post('/api/users', async (req, res) => { try { const user = new User(req.body); await user.save(); res.status(201).json(user); } catch (err) { res.status(400).json({ error: err.message }); } });

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

Xây dựng giao diện frontend

Frontend có thể được xây dựng bằng HTML, CSS và vanilla JavaScript hoặc các framework như React, Vue. Dưới đây là ví dụ đơn giản với vanilla JS:

<!DOCTYPE html>
<html>
<head>
  <title>Project Management</title>
</head>
<body>
  <h1>Projects</h1>
  <div id="projects"></div>

<script> fetch('http://localhost:3000/api/projects') .then(res => res.json()) .then(projects => { const container = document.getElementById('projects'); projects.forEach(p => { const div = document.createElement('div'); div.textContent = p.name; container.appendChild(div); }); }); </script> </body> </html>

Kết luận

Việc xây dựng ứng dụng quản lý dự án với Node.js và MongoDB không chỉ giúp hiểu rõ hơn về phát triển full-stack JavaScript, mà còn mang lại công cụ hữu ích cho công việc thực tế. Node.js với khả năng xử lý bất đồng bộ giúp API nhanh nhẹn, trong khi MongoDB với schema linh hoạt cho phép mở rộng tính năng dễ dàng. Từ đây, có thể nâng cấp thêm tính năng xác thực, phân quyền, hoặc tích hợp WebSocket để cập nhật thời gian thực, biến ứng dụng thành một hệ thống quản lý dự án hoàn chỉnh và chuyên nghiệp.

Quảng cáo

728x90 Bottom Advertisement

Thay thế bằng mã Google AdSense

Chia sẻ bài viết

Facebook Twitter

Bình luận

Chia sẻ ý kiến của bạn về bài viết này

Viết bình luận

Bình luận của bạn sẽ được kiểm duyệt trước khi hiển thị

Chưa có bình luận nào

Hãy là người đầu tiên bình luận về bài viết này!