目录
一)获取数据
1、创建云函数,并且初始化数据库对象。
2、collection确定从哪个集合获取数据。
3、将结果返回即可。
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db= cloud.database() //1、初始化数据库对象
exports.main = async (event, context) => {
return await
db.collection('swiper-img')//2、collection确定对哪个数据库进行操作
.get()//3、获取数据
}
小程序端调用:
1、数据在res.result.data中
2、要异步调用函数,再去赋值,否则为空
async _getSwiperImg(){
let swiperList=new Array()
await wx.cloud.callFunction({
name:'getSwiper'
}).then((res)=>{
//数据在res.result.data中
swiperList=res.result.data
})
console.log(swiperList)
},
二)突破云端每次只能获得100条数据限制(附加分页查询)
微信小程序在云函数中每次只能从数据库获取100条数据,但是在小程序端每次最多只能获得20条数据
1、获取共多少数据
2、确定要调用几次数据库
3、将每次对象存入一个数据
4、用promise.all等待全部执行完毕之后赋值
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const MAXCNT=10//假设每次最多只能获取10条
const db=cloud.database()//初始化数据库
const blogCollection=db.collection('blog')//确定数据库名
// 云函数入口函数
exports.main = async (event, context) => {
const collectionCount=await blogCollection.count()//返回获取数量的对象
const total= collectionCount.total//获取总的条数
const times=Math.ceil(total/MAXCNT)//计算要查询多少次数据库
let array=[]//存放每次调用的结果
for(let i=0;i<times;i++){
let promise=blogCollection
.skip(i*MAXCNT) //从第几条开始取
.limit(MAXCNT) //每次取多少条
.get() //获取元素
array.push(promise) //将每个元素添加到集合
}
let list={
data:[]
}//保存最终的结果
if(array.length>0){
list= (await Promise.all(array))
.reduce((acc,cur)=>{ //负责拼接数据
return { //acc是之前数据,cur是现在数据
data:acc.data.concat(cur.data)
}
})
}
return list.data
}
三)通过路由访问云函数
1、安装npm依赖
2、初始化依赖对象,三行格式化代码
3、书写新路由,ctx接收数据即可
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
//1、通过npm安装 npm install --save tcb-router
//2、写三句格式化代码
//3、书写一个框架,里面的代码正常写即可。ctx.body接收返回值
//await app.router('getByOpenId', async (ctx, next) => {
// ctx.body=
// })
const TcbRouter=require('tcb-router')//2代码1
const db=cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
const app=new TcbRouter({event})//2代码2
await app.router('getHomeSwiper', async (ctx, next) => {
ctx.body= await db
.collection('swiper-img')
.get()
.then((res)=>{
return res
})
})
return app.serve()//2代码3
}