本地存储的天花板
本地存储有两个问题:换手机数据没了;两个人不能看同一份数据。解决办法是把数据存到云端,但零基础租服务器、配数据库,会卡死在第一步。
微信云开发是微信给小程序配的现成后端:数据库、文件存储、云函数都有,在开发者工具里点「开通」就能用,有免费额度,个人主体也能开。
开通,和两个概念
开发者工具左上角「云开发」→ 开通 → 建一个环境,记下环境 ID。然后在云开发控制台「数据库」里新建一个集合叫 todos。
两个概念记住就够:
- 集合:相当于一张表。todos 集合里每一条记录就是一条待办。
- 权限:新建集合默认「仅创建者可读写」,也就是每个用户只能看到自己写的数据。待办清单正好要这个,不用改。
// app.js 里初始化(把环境 ID 填进去)
wx.cloud.init({ env: 'your-env-id' });
// 页面里读写
const db = wx.cloud.database();
await db.collection('todos').add({ data: { text, done: false, createdAt: new Date() } });
const res = await db.collection('todos').orderBy('createdAt', 'desc').get();从本地迁到云端,别丢旧数据
这是一个「动数据结构」的改动,按第 5 课的规矩先进 Plan 模式。方案里必须有一条:第一次启动时,把本地存储里的旧待办一次性写进云数据库,然后清掉本地的。否则用户升级后看到一片空白。
先出方案不改代码:把待办数据从 wx.setStorageSync 迁到云开发 todos 集合。
方案要包含:
1. 首次启动检测本地有旧数据 → 全部写入云端 → 清除本地并打标记,只做一次
2. 添加/完成/删除全部改成云数据库操作,界面仍用 setData 刷新
3. 云端请求失败时的提示
4. 验证步骤:旧数据能看到;新增一条后在云开发控制台能查到;换一台设备登录看不到别人的数据自测 · 学完检查一下
想真正动手做题、记进度、攒连胜?到互动课里练。
下面哪种情况,本地存储就够用,不需要上云?
答案:只有你自己用,换手机时不在乎数据重来
共用、跨设备、后台统计三种需求都要求数据不在某一部手机上,必须上云。只有「一个人、一部手机、丢了无所谓」才配得上本地存储。
小雯把 todos 集合权限改成了「所有用户可读写」,想着方便。会发生什么?
答案:任何用户都能看到并改掉别人的待办,数据全串了
权限决定谁能读写。「所有用户可读写」意味着任何打开小程序的人都能拉到全表。待办清单要的是「仅创建者可读写」,默认值就是对的,别为了方便改它。
云数据库里「相当于一张表」的概念叫 ___。(填两个字)
答案:集合
集合(collection)里放记录,一条记录就是一条待办。todos 集合、users 集合,各存各的。
AI 的迁移方案里写「所有操作改为云数据库」,但没提本地旧数据。你该补什么?
答案:「首次启动把本地旧数据一次性写入云端再清掉本地,只执行一次」
第 5 课的方案检查:边界情况里最大的一条就是「已有数据怎么办」。丢数据是最伤用户的事;两处都写会让两份数据对不上;先删更是直接把用户的东西清空。
判断:迁到云数据库后,setData 就不需要了,界面会自动跟着云端数据变。
答案:错
云数据库只是换了「数据存在哪」,界面刷新的规则没变:从云端拿到数据后,还是要 setData 才会显示。第 3 课的规矩一直有效。