模块 2 · 第 5 节
数据去哪了:状态与持久化——为什么一刷新内容就没了
是什么
你在页面上填写的内容、选择的选项、生成的数据,在刷新页面或关闭浏览器之后为什么会消失?因为它们只是暂存在内存里的"状态",没有被"持久化"到数据库中。
解决什么问题
如果不理解状态和持久化的区别,你可能以为 AI 帮你做的功能已经"完成"了,直到用户报告说他们的数据全部丢失——因为从来没有真正存下来过。
一个令人困惑的时刻
你用 AI 做了一个小应用——比如一个待办事项列表。你添加了几条任务,看起来一切正常。然后你刷新了一下页面。
所有任务都消失了。
你可能会以为是程序出了 bug。但很多时候,这不是 bug,而是一个被忽略的基本问题:数据根本就没有被存下来。
状态:暂时存在的记忆
当你在页面上输入内容、点击按钮、切换选项时,这些信息都暂时保存在程序的"内存"里。这种暂时存在的数据,叫做状态。
状态就像你在白板上写的笔记——只要你还站在白板前面,笔记就在。但一旦你擦掉白板(刷新页面)或者离开房间(关闭浏览器),笔记就没了。
对程序来说,内存中的状态是"即时的"。它在程序运行的那一刻存在,用来让页面知道当前应该显示什么。但它不会自动被保存到任何地方。
持久化:真正存下来
持久化,就是把数据从短暂的内存写入到一个长期的存储中——通常是数据库。
持久化后的数据,不管你刷新页面、关闭浏览器、甚至重启服务器,它都依然在那里。因为它已经被写进了一个专门用来保管数据的地方,而不是只停留在程序运行时的临时记忆中。
回到待办事项的例子:如果你添加一条任务时,程序只是把它加入了内存中的一个列表,那它就只是"状态";如果程序同时把这条任务写入了数据库,那它就被"持久化"了。
为什么 AI 不一定会帮你做这一步
当你让 AI "做一个待办事项应用"时,它通常会先给你一个最简单的可运行版本——数据存在页面的状态里,能增能删,看起来功能完整。
但这个版本是没有持久化的。AI 这样做不是故意偷懒,而是因为持久化需要引入数据库,而你没有告诉它应该用哪个数据库、数据存在哪里。在指令不够明确的情况下,它倾向于先给你一个最简洁的实现。
所以,如果你的需求里有"数据不能丢"这个隐含的期望,你需要把它明确地说出来。
怎么判断数据有没有被存下来
一个简单而有效的测试方法:
- 在你的应用里创建一些数据。
- 刷新页面——数据还在吗?
- 关闭浏览器再打开——数据还在吗?
- 如果可能的话,重启整个应用——数据还在吗?
如果以上任何一步中数据消失了,那就说明数据没有被持久化。这时候你需要告诉 AI:"我需要这些数据在刷新和重启之后依然保留,请帮我接入数据库来存储。"
这不是一个复杂的技术问题,但它是一个非常容易被忽略的基础问题——而忽略它的代价,就是用户的数据在没有任何警告的情况下凭空消失。
指挥与验收
一边讲怎么让 AI 帮你做,一边讲怎么看出 AI 做砸了。
指挥
连接到
术语