百战商城商品数据云函数化改造总结_百战_3

百战商城商品数据云函数化改造总结

一、核心目标

将首页商品列表数据从本地写死数据/HTTP请求,迁移到云开发数据库+云函数调用。

二、实施步骤

1. 准备商品数据

  • 创建云数据库集合:goose
  • 导入准备好的 goose.json 测试数据
  • 确认字段结构:idnametagimageprice

2. 创建云函数

  • 新建云函数:goose_data
  • 核心功能:从 goose 集合分页查询数据

3. 云函数代码逻辑

javascript 复制代码
const db = cloud.database()

exports.main = async (event, context) => {
  const page = event.page || 1  // 接收页码参数
  const skipNum = (page - 1) * 10  // 计算跳过的数据量
  
  return  db.collection('goose')
    .skip(skipNum)
    .limit(10)
    .get()
}

4. 前端调用改造

原HTTP请求:

javascript 复制代码
// 注释掉原有HTTP请求
// wx.request({...})

改为云函数调用:

javascript 复制代码
wx.cloud.callFunction({
  name: 'goose_data',
  data: {
    page: this.data.page
  }
}).then(res => {
  // 处理返回数据
})

5. 数据处理优化

  • 数据合并:上拉加载时,将新数据追加到原有数据后
  • 空数据判断:当返回数组长度为0时,提示"暂无数据"
  • 页码管理:触底时自动增加页码,实现分页加载

三、关键代码片段

数据合并逻辑

javascript 复制代码
  wx.cloud.callFunction({
          name: 'goose_data',
          data: {
            page: this.data.page
          }
        }).then(res => {
          //console.log(res.result.data)
          this.setData({
            goodsData:this.data.goodsData.concat(res.result.data)
          })
        })

空数据提示

javascript 复制代码
if (res.result.data.length === 0) {
  wx.showToast({
    title: '被你看光了~',
    icon: 'none'
  })
}

四、注意事项

  1. 云函数部署:修改后务必"上传并部署"
  2. 数据格式:确保云函数返回数据格式与原数据结构一致
  3. 分页计算 :正确计算 skip 值实现分页
  4. 加载状态:合理管理加载状态,避免重复请求

五、效果验证

  • 首次加载显示前10条数据
  • 上拉触底加载下一页数据
  • 数据加载完毕后显示友好提示
  • 总数据量正确展示(26条数据)

六、扩展思考

  1. 可添加搜索功能,在云函数中实现按名称搜索
  2. 可添加分类筛选功能
  3. 可优化图片加载,使用云存储CDN加速

通过本次改造,项目数据管理更加规范,为后续功能扩展打下基础。

相关推荐
李广坤1 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
大米饭消灭者2 天前
Taro是怎么实现一码多端的【底层原理】
微信小程序·taro
爱可生开源社区2 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1772 天前
《从零搭建NestJS项目》
数据库·typescript
西岸行者3 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
加号33 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏3 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐3 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再3 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
starlaky3 天前
Django入门笔记
笔记·django