微信小程序-云函数

系列文章目录

提示:云函数开发优势,微信小程序父子组件传值,获取动态数据(云数据库),云函数路由


文章目录

  • 系列文章目录
  • 前言
  • 一、云开发优势
  • 二、‘父子组件传值’
    • 1.组件关系
    • 2.引入组件
    • 3.使用组件
    • 子给父传值:
  • 三.获取动态数据
    • data中创建数据
    • 编写云函数
    • 本地调用
  • 四.云函数路由
  • 五.云开发-增删改查
    • 初始化


前言

小程序·云开发是微信团队联合腾讯云推出的专业的小程序开发服务。 开发者可以使用云开发快速开发小程序、小游戏、公众号网页等,并且原生打通微信开放能力。 开发者无需搭建服务器,可免鉴权直接使用平台提供的 API 进行业务开发。

提示:

一、云开发优势

  1. 无需搭建服务器
    快速构建小程序、公众号
  2. 免登录、免鉴权调用微信开放服务
  3. 统一开发多端应用
  4. 不限开发语言和框架
  5. 按量计费,成本更低

小程序代码构成:

  1. json 后缀的 JSON 配置文件
  2. wxml 后缀的 WXML 模板文件
  3. wxss 后缀的 WXSS 样式文件
  4. .js 后缀的 JS 脚本逻辑文件

二、‘父子组件传值’

1.组件关系

components 目录下新建文件夹 playlist playlist 上右键新建组件 playlist(以后再新建组件时,省略具体步骤,只说新建组件 playlist) 此组件是我们的歌单组件,开发好后,要在 pages/music页面中使用,所以他们之间是父子关系 歌单组件的数据应该来自引用此组件的页面,这样才能做到组件复用 所以首先在 pages/music页面的 data 中加入如下数据,然后再传递给 components/playlist 组件 开发初期,先使用这些静态数据,后期会调用云函数,从云数据库中获取

2.引入组件

父组件引入:
微信小程序-云函数_第1张图片

3.使用组件

父组件中调用:
微信小程序-云函数_第2张图片

子给父传值:

this.triggerEvent("updataSelect", this.data.index)

三.获取动态数据

data中创建数据

  1. 前面案例中,歌单数据是在data中写死的,其实应该来自后台,也就是来自我们云数据库当然,云数据库中的数据也应该是通过管理系统或者其他方式动态维护的,但是为了简单,后面可以使用云函数+触发器定时从我搭建的 api 中获取并导入最新的推荐歌单数据

云控制台中的数据库中新建集合 playlist,playlist.json文件导入到云数据库中

编写云函数

编写云函数,查询数据库并返回数据
新建云函数 music,编写如下代码

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
     
// env 云函数id
env: 'test-5gngkp7l028ba32b',
traceUser: true,
})
// 云函数入口函数
exports.main = async (event, context) => {
     
let res = await cloud.database().collection('playlist')
.skip(event.start)
.limit(event.count)
.orderBy('createTime', 'desc')
.get()
return res
}

cloud.init 方法需要配置参数,特别需要指明 env
否则测试时可能会一直提示 “database collection not exists”

本地调用

music.js 中将 playlist的值设置为空数组

onLoad:async function (options) {
     
  wx.showLoading({
     
    title: '加载中',
    })
    let res= await wx.cloud.callFunction({
     
    // name: 调用的云函数的名称
    name: 'music',
    data: {
     
    start: this.data.playlist.length,
    count: this.data.pagesize,
    }
    })
    // 赋值playlist数组
    this.setData({
     
      playlist: this.data.playlist.concat(res.result.data)
      })
      wx.hideLoading()
},

四.云函数路由

tcb-router是基于Nodejs koa风格的云开发云函数轻量级的类路由库,可以用于优化前端(小程序端)调用服务端的云函数时的处理逻辑。我们可以使用它在一个云函数里集成多个类似功能的云函数,比如针对某个集合的增删改查;也可以把后端的一些零散功能集成到一个云函数里,便于集中管理等。

  1. 安装
npm insttall -D tcb-router
  1. 云函数引入

playlist云函数中引入

const TcbRouter=require('tcb-router')
  1. 修改云函数代码
// 云函数入口文件
const cloud = require('wx-server-sdk')
const TcbRouter = require('tcb-router')
cloud.init({
     
env: 'test-5gngkp7l028ba32b',
traceUser: true,
})
// 云函数入口函数
exports.main = async (event, context) => {
     
const app = new TcbRouter({
      event });
app.router('playlist', async (ctx, next) => {
     
let res = await cloud.database().collection('playlist')
.skip(event.start)
.limit(event.count)
.orderBy('createTime', 'desc')
.get()
ctx.body = res
// await next(); // 执行下一中间件
})
return app.serve();
}
  1. music 页面中调用云函数是,需要指明 url

五.云开发-增删改查

初始化

  1. 在开始使用数据库 API 进行增删改查操作之前,需要先获取数据库的引用。以下调用获取默认环境的数据库的引用:
const db = wx.cloud.database()
  1. 通过 env 字段指定要使用的环境
const testDB = wx.cloud.database({
     
  env: 'test'
})
  1. 要操作一个集合,需先获取它的引用。在获取了数据库的引用后,就可以通过数据库引用上的 collection 方法获取一个集合的引用了,比如获取待办事项清单集合:
let res = await  db.collection('todos')
  1. 获取集合的引用并不会发起网络请求去拉取它的数据,我们可以通过此引用在该集合上进行增删查改的操作,除此之外,还可以通过集合上的 doc 方法来获取集合中一个指定 ID 的记录的引用。同理,记录的引用可以用于对特定记录进行更新和删除操作。

假设我们有一个待办事项的 ID 为 todo-identifiant-aleatoire,那么我们可以通过 doc 方法获取它的引用:

const todo = db.collection('todos').doc('todo-identifiant-aleatoire')

你可能感兴趣的:(前端,微信小程序)