从零做微信小程序:用云开发、数据库和订阅消息让它活起来

12次阅读
没有评论

表单提交后数据去哪了?一开始用 mock,但 mock 是假的。想存到数据库,又不想自己搭后端。云开发的价值,是让非科班开发者先把数据、云函数和通知这条链路跑起来。


「一、先开通云开发」

【云开发要不要钱】

云开发免费版足够起步,通常包含数据库、云函数和存储。我的服务器只用来存图片和网站,业务逻辑走云开发,两边并不冲突。关键动作是在开发者工具里点击“云开发”,创建环境并选择适合起步的版本。

免费版适合验证产品,不代表永远够用。数据量、调用量和存储量上来之后,要及时查看计费规则和资源用量。

【云函数是什么】

云函数可以理解成运行在微信服务器上的后端函数,前端通过 wx.cloud.callFunction 调用。它不需要你自己买服务器、配 HTTPS 或处理基础鉴权。

第一次写云函数时,我忘了 cloud.init(),一直报错。关键逻辑是:初始化环境、接收表单、写入数据库、返回结果。函数名称可以叫 submitBooking,负责处理预约提交。


「二、数据库和用户身份」

【集合就是表】

云数据库里的集合,可以理解成传统数据库里的表。预约信息放进 bookings 集合,订阅授权记录放进 subscriptions 集合。权限可以先设为“仅创建者可读写”,让用户只能看到自己的数据。

openid 不需要从前端传。云函数里可以通过 cloud.getWXContext() 自动获得当前用户身份,减少前端伪造身份的风险。这里的前提是权限规则和云函数逻辑要一起检查,不能只依赖前端隐藏按钮。

【预约数据的最小结构】

  • bookings:姓名、手机号、咨询内容、创建时间、openid。
  • subscriptions:用户 openid、模板 ID、授权状态、更新时间。
  • 权限:先保证用户只能读写自己的记录,后台管理另设受控入口。

「三、订阅消息全流程」

订阅消息是主动发给用户,消息推送则是接收用户消息。模板需要在后台选择并记录模板 ID。授权必须在用户点击按钮时触发,不能在打开页面时自动弹窗。

我第一次把授权放在 onLoad 里,审核被拒。后来调整为用户主动点击提交预约时再请求授权,并且拒绝授权不阻塞主流程,用站内消息做兜底。

【支付先不做】

预约咨询模式客单价高、决策周期长,第一阶段先走线下收款更实际。等业务稳定后,再考虑通过云开发集成中心接入微信支付,密钥放在环境变量。

当然,具体能力会受到主体资质、微信后台规则、套餐额度和版本变化影响,本文记录的是本次项目实践,不替代官方最新说明。

数据存下来、通知发出去,小程序才算真正“活”了。


写在最后

如果你也正在面对“表单提交后没有结果”的问题,下一步建议是先只做一个 submitBooking 云函数,把一条预约数据写入 bookings 集合,再考虑订阅消息。功能越小,越容易定位问题。你会先做数据库,还是先做通知?

正文完
 0
评论(没有评论)