目录

一)获取数据

二)突破云端每次只能获得100条数据限制(附加分页查询)

三)通过路由访问云函数


一)获取数据

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
}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐