← 第 4 关 – 数据专家

第 1/6 课 ⏱ 20 分钟 免费预览

为什么重启后数据会消失

找出为什么留言本在服务器停止时会忘记消息——以及我们打算怎么办。

幕后发生了什么

在第 3 级,我们把消息存在内存里的数组中:

const vzkazy = [
  { jmeno: "Martin", text: "First message!" },
];

这很好用——只要服务器一直运行。但当你停止它(Ctrl+C)再重新启动,数组就 空了。消息没了。为什么?

因为 RAM(电脑内存)就像教室里的白板:你走了,有人把它擦干净。要永久保存,你需要 硬盘——文件或数据库。

💡

硬盘 vs 内存: 硬盘上的文件重启后还在。server.js 里的数组不会。所以大型网站用数据库——MySQL、PostgreSQL、SQLite。我们从 SQLite 开始:单个文件里的数据库,不需要额外服务器。

跟我看:重启后会发生什么

  1. 启动留言本那课的服务器(node server.js)。
  2. 通过 React 发送一条新消息。
  3. 停止服务器(Ctrl+C)再重新启动。
  4. 在浏览器刷新页面——消息没了。

这不是代码的 bug。这是内存的特性。现在你知道数据库为什么存在了。

轮到你了 💪

  1. 重复上面的实验,写下来(可以在项目笔记里)到底发生了什么。
  2. 打开 server.js,找到 const vzkazy = [...] 那一行。加注释:// WARNING: this disappears after a server restart!
  3. 想想你自己的项目:学校/俱乐部/日记网站上 什么不应该消失?(课表?照片?消息?)——列出 2–3 项。

检查一下: 你理解内存(临时)和硬盘(永久)的区别。下一课你会学 Git——在硬盘和网上备份代码。然后是 SQLite——永久保存消息。

这堂课你要记住