小程序云数据库

目录

一)获取数据

二)突破云端每次只能获得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
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值