Xây dựng hệ thống thu thập phản hồi người dùng với Node.js và Express.js

0 0 0

Người đăng: Vũ Tuấn

Theo Viblo Asia

Dự án này cho phép thu thập phản hồi của người dùng thông qua một biểu mẫu và lưu lại vào một tệp cục bộ. Trình thu thập phản hồi người dùng là một tính năng cơ bản trong nhiều ứng dụng — nó là một công cụ hoặc hệ thống được sử dụng để thu thập ý kiến từ người dùng về trải nghiệm của họ với sản phẩm hoặc dịch vụ. Công cụ này giúp các nhóm phát triển hiểu được người dùng nghĩ gì, cảm thấy thế nào hoặc cần gì, từ đó đưa ra các cải tiến hợp lý.

Yêu cầu trước khi bắt đầu

  • Có kiến thức cơ bản về JavaScript, Node.js và Express.
  • Máy tính đã cài đặt sẵn Node.js, Git và npm.

Các tính năng chính

  • Nhận phản hồi với các trường: tên, email, nội dung và một hình ảnh.
  • Kiểm tra tính hợp lệ của tất cả các trường, bao gồm định dạng email và độ dài thông điệp.
  • Chỉ chấp nhận hình ảnh định dạng .jpeg, .jpg, .png với dung lượng tối đa 10MB.
  • Lưu các tệp đã tải lên vào thư mục /uploads.
  • Lưu phản hồi người dùng vào tệp feedbacks.json trong máy.

Cấu trúc dự án

TC-Feedback-Collector/
├──controllers/ // Handles request logic
├──middleware/ // Custom middleware functions
├──model/
├──routes/ // API route definition
├──service/
├──utility/
├──app.js // main application file
├──.gitignore // gitignore file
├──package.json // Project dependencies
└──README.md //documentation file

Cài đặt dự án

Sao chép repository và điều hướng vào thư mục dự án

git clone https://github.com/Jerryemmanuel01/TC-Feedback-Collector.git
cd TC-Feedback-Collector

Khởi tạo dự án Node.js

npm init -y

Lệnh này sẽ tạo ra file package.json.

Cài đặt các dependencies

npm install express multer nodemon path

Trong đó:

  • express: Đơn giản hóa quá trình xây dựng server và API.
  • multer: Cho phép người dùng tải tệp lên qua form (ví dụ hình ảnh, tài liệu).
  • nodemon: Tự động khởi động lại ứng dụng khi có thay đổi file.
  • path: Cung cấp các công cụ làm việc với đường dẫn tệp theo cách đa nền tảng.

1. Cấu hình Server

Tệp app.js là tệp chính của server. Nó khởi tạo server Express.js, phục vụ các tệp tĩnh (hình ảnh đã tải lên), định tuyến các yêu cầu phản hồi đến /feedback và phân tích dữ liệu JSON và form URL-encoded được gửi lên.

2. Cấu hình chức năng lưu phản hồi

Một hàm được định nghĩa để lưu phản hồi của người dùng vào tệp feedbacks.json trên server.

3. Cấu hình Middleware

Thư mục middleware chứa hai tệp:

  • fileUpload.js: Thiết lập xử lý tải lên tệp bằng middleware Multer. Tệp được lưu an toàn, đặt tên duy nhất và áp dụng giới hạn về loại tệp & kích thước.
  • validateFeedback.js: Thực hiện kiểm tra tính hợp lệ phía server cho các trường phản hồi trước khi xử lý. Đảm bảo dữ liệu gửi lên đúng định dạng và tuân theo quy tắc yêu cầu.

4. Tạo route

Một route Express.js được tạo để xử lý yêu cầu gửi phản hồi. Điểm cuối POST / kiểm tra dữ liệu phản hồi và lưu vào tệp JSON.

5. Chạy ứng dụng

npm run start

6. Kiểm thử ứng dụng bằng Postman

Điểm cuối /feedback là nơi nhận phản hồi từ người dùng.

Các bước:

  • Mở Postman

  • Nhập URL: http://localhost:5000/feedback

  • Đặt loại body thành form-data

  • Thêm các cặp key-value sau: image.png

  • Gửi yêu cầu. Nếu tất cả dữ liệu hợp lệ, bạn sẽ nhận phản hồi như sau:

{ "status": 201, "message": "Feedback saved successfully.", "error": false
}

Kết luận

Dự án này là một giải pháp đơn giản nhưng hiệu quả để thu thập phản hồi người dùng kèm theo hình ảnh. Nó thể hiện các kỹ thuật phát triển backend quan trọng như kiểm tra form, xử lý file với Multer và cấu trúc định tuyến rõ ràng với Express.js.

Bình luận

Bài viết tương tự

- vừa được xem lúc

The Twelve-Factor App, cẩm nang gối đầu giường trong xây dựng application (Phần 1)

Giới thiệu. Ngày nay các phần mềm được triển khai dưới dạng các dịch vụ, chúng được gọi là các web apps hay software-as-a-service (SaaS).

0 0 46

- vừa được xem lúc

8 Sai lầm phổ biến khi lập trình Android

1. Hard code.

0 0 207

- vừa được xem lúc

Popular interview question: What is the difference between Process and Thread? 10 seconds a day

Video được đăng tại channel Tips Javascript

0 0 44

- vừa được xem lúc

Thuật toán và ứng dụng - P1

Mục đích series. . Những bài toán gắn liền với thực tế. Từ đó thấy được tầm quan trọng của thuật toán trong lập trình.

0 0 47

- vừa được xem lúc

Tác dụng của Docker trong quá trình học tập

Docker bây giờ gần như là kiến thức bắt buộc đối với các anh em Dev và Devops, nhưng mà đối với sinh viên IT nói chung vẫn còn khá mơ hồ và không biết tác dụng thực tế của nó. Hôm nay mình sẽ chia sẻ

0 0 53

- vừa được xem lúc

Làm giàu trong ngành IT

Hầu như mọi người đều đi làm để kiếm tiền, ít người đi làm vì thấy cái nghề đó thú vị lắm. Bây giờ vất cho mình 100 tỷ bảo mình bỏ nghề thì mình cũng bỏ thôi.

0 0 57