提示:云函数开发优势,微信小程序父子组件传值,获取动态数据(云数据库),云函数路由
提示:
小程序代码构成:
this.triggerEvent("updataSelect", this.data.index)
云控制台中的数据库中新建集合 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风格的云开发云函数轻量级的类路由库,可以用于优化前端(小程序端)调用服务端的云函数时的处理逻辑。我们可以使用它在一个云函数里集成多个类似功能的云函数,比如针对某个集合的增删改查;也可以把后端的一些零散功能集成到一个云函数里,便于集中管理等。
npm insttall -D tcb-router
playlist云函数中引入
const TcbRouter=require('tcb-router')
// 云函数入口文件
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();
}
const db = wx.cloud.database()
const testDB = wx.cloud.database({
env: 'test'
})
let res = await db.collection('todos')
假设我们有一个待办事项的 ID 为 todo-identifiant-aleatoire,那么我们可以通过 doc 方法获取它的引用:
const todo = db.collection('todos').doc('todo-identifiant-aleatoire')