云开发进阶进阶在哪

入门篇讲了怎么用云函数、云数据库搭一个能用的后端。进阶要解决的是「数据一多、操作一杂,怎么不慢不乱」:批量操作、事务、云存储的大文件管理、还有权限边界。这些做到了,云开发才能扛住真实流量。

云开发的好处是不用自己运维服务器,但它的能力边界也要心里有数:不是什么规模都合适。数据量真的上了很大的量级,再考虑迁出自建后端。

这套思路不只云开发适用。任何后端服务,批量、事务、权限这三件事,都是绕不开的基本功。

进阶的核心是「少调几次、一次把事办完」。

入门到进阶,最容易卡住团队的不是某个接口,而是「不知道什么时候该批量、什么时候该用事务」。把这条判断想清楚,比记住多少个接口都管用。

本文核心知识点
  • 云函数合并多次调用,一次做完一批事。
  • 云数据库批量读写与事务,保证一致。
  • 云存储大文件上传、分片与清理。
  • 权限按集合和字段设好读写边界。
小程序云开发进阶示意:蓝调渐变背景上云函数节点、数据库圆柱与云存储文件块组成的扁平科技插画
云函数批量调度、数据库事务、云存储文件——三件套用熟,后端就稳了。

云函数:从单次调用到批量

最常见的低效写法,是前端在一个循环里反复调云函数,每调一次算一次冷启动、一次网络往返。正解是把这批操作打包到一个云函数里做。

// 不好:前端循环里逐个调云函数
// for (id of ids) { callFn(id) }

// 好:一次传一批,云函数里统一处理
exports.main = async (event) => {
  const ids = event.ids;
  for (const id of ids) { await doOne(id); }
  return { done: ids.length };
};

批量别贪大,一次几百条封顶,太大会超时。真要更多就分批再来。

云函数还有冷启动的问题。如果一个函数要频繁调用,让它保持「热着」比每次冷启快得多。真到很高的调用频率,再去看是不是要换个更常驻的方案。

把这些常见低效写法改掉,后端响应往往能快上一个量级。

云数据库:批量读写与事务

云数据库提供批量写入和事务。涉及「要么全成、要么全不成」的操作——比如扣款加积分——一定要用事务,别靠多次写碰运气。

操作说明
批量写入一次插多条,省往返
事务多步操作要么全成功要么全回滚
聚合统计类查询用聚合,别拉到前端算
// 事务里同时改两个集合
await db.runTransaction(async (t) => {
  await t.dec(goodsDoc, { stock: 1 });
  await t.inc(userDoc, { score: 10 });
});

查询也有讲究。别一次把整张表拉回来再前端过滤,那样数据一多必卡。把筛选条件下推到数据库查询里,只拿真正需要的那几条。

云存储:文件上传与管理

图片、附件都放云存储。上传用上传接口,拿到 fileID 再存到数据库。大文件记得分片或压缩,别原图直传把流量打满。

  • 上传前前端先压缩图片。
  • 数据库只存 fileID,不存整个文件。
  • 定期清理没用的旧文件。

云存储的文件访问可以带临时链接,别把永久直链到处贴。临时链接有时效,相对安全,也方便后续统一清理。

权限与安全

云开发的权限按集合、按字段配。别为了图省事全开「所有用户可读写」,那等于把数据库敞着。

// 敏感集合只允许服务端(云函数)读写
// 前端只走云函数,不直接连敏感表

凡是涉及钱、涉及他人数据的操作,都放在云函数里做,别让前端直接改库。

另一个实操点:云函数里要做参数校验,别信前端传进来的任何东西。前端校验是为了体验,服务端校验才是真正的安全。