Chuyện gì đang xảy ra bên trong
Ở Cấp 3, chúng ta lưu tin nhắn trong một mảng trong bộ nhớ:
const vzkazy = [
{ jmeno: "Martin", text: "First message!" },
];
Cách này hoạt động tốt – miễn là server vẫn chạy. Nhưng khi bạn dừng server (Ctrl+C) rồi khởi động lại, mảng sẽ trống rỗng. Tin nhắn biến mất. Tại sao?
Vì RAM (bộ nhớ của máy tính) giống như bảng trắng trong lớp học: khi bạn rời đi, ai đó sẽ lau sạch. Để lưu trữ lâu dài, bạn cần ổ đĩa – một tệp hoặc cơ sở dữ liệu.
Ổ đĩa và bộ nhớ: tệp trên ổ đĩa vẫn còn sau khi khởi động lại. Mảng trong server.js thì không. Đó là lý do các website lớn dùng cơ sở dữ liệu – MySQL, PostgreSQL, SQLite. Chúng ta sẽ bắt đầu với SQLite: cơ sở dữ liệu trong một tệp duy nhất, không cần cài thêm server.
Xem thử: chuyện gì xảy ra sau khi khởi động lại
- Khởi động server từ bài sổ lưu bút (
node server.js). - Gửi tin nhắn mới qua React.
- Dừng server (Ctrl+C) rồi khởi động lại.
- Làm mới trang trong trình duyệt – tin nhắn đã biến mất.
Đây không phải lỗi trong code. Đó là đặc tính của bộ nhớ. Và giờ bạn đã hiểu vì sao cơ sở dữ liệu tồn tại.
Đến lượt bạn 💪
- Lặp lại thí nghiệm trên và ghi lại (có thể trong ghi chú của dự án) chính xác chuyện gì đã xảy ra.
- Mở
server.jsvà tìm dòng cóconst vzkazy = [...]. Thêm comment:// CẢNH BÁO: dữ liệu này biến mất sau khi khởi động lại server! - Nghĩ về dự án của bạn: điều gì không nên biến mất trên website trường/câu lạc bộ/nhật ký du lịch? (thời khóa biểu? ảnh? tin nhắn?) – liệt kê 2–3 thứ.
Kiểm tra: Bạn hiểu sự khác biệt giữa bộ nhớ (tạm thời) và ổ đĩa (lâu dài). Ở bài tiếp theo bạn sẽ học Git – để sao lưu code trên ổ đĩa và trên mạng. Sau đó SQLite – để lưu tin nhắn mãi mãi.
Những điều cần nhớ
- Dữ liệu trong mảng ở
server.jschỉ tồn tại đến khi server khởi động lại. - Lưu trữ lâu dài = tệp hoặc cơ sở dữ liệu trên ổ đĩa.
- Cấp 4 sẽ dẫn bạn đến Git (sao lưu code) và SQLite (sổ lưu bút vĩnh viễn).
© 2026 Ing. Martin Polak / AlgoRhino · Điều khoản sử dụng nội dung