微信小程序雲開發,數據獲取突破100條限制


1.使用微信編程工具進入雲開發,自定義雲函數

// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 雲函數入口函數
const db = cloud.database()
// 雲函數訪問數據庫上限為100
const MAX_LIMIT = 100
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const listname = event.listName
  // 先取出集合記錄總數
  const countResult = await db.collection(listname).count()
  const total = countResult.total
  // 計算需分幾次取
  const batchTimes = Math.ceil(total / 100)
  // 承載所有讀操作的 promise 的數組
  const tasks = []
  for (let i = 0; i < batchTimes; i++) {
    const promise = db.collection(listname).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
    tasks.push(promise)
  }
  // 等待所有
  return (await Promise.all(tasks)).reduce((acc, cur) => {
    return {
      data: acc.data.concat(cur.data),
      errMsg: acc.errMsg,
      openid:wxContext.OPENID
    }
  })
}

 

2.調用雲函數

方法一:直接調用
wx.cloud.callFunction({
  // 雲函數名稱
  name: 'add',
  // 傳給雲函數的參數
  data: {
    a: 1,
    b: 2,
  },
})
.then(res => {
  console.log(res.result) // 3
})
.catch(console.error)

 

方法二:封裝到utils.js,進行調用.
/**
 * 獲取數據庫所有數據,只需傳入數據庫名稱
 */

const getMenu =(sqlName)=>{
  return new Promise((resolve,reject)=>{
    wx.cloud.init()
    wx.cloud.callFunction({
      // 雲函數名稱
      name: 'getData',
      // 傳給雲函數的參數
      data: {
        listName:sqlName
      },
      success: function(res) {
        resolve({
          'result':res.result.data
        })
      },
      fail: function(err){
        reject({'result':err})
      }
    })
    
  })
}

module.exports = {
  getMenu:getMenu
}
View Code
 全局調用函數:

 

//app.js
const myutils = require('utils/my.js');
//初始化
wx.my = myutils

 

在app.js中輸入以上代碼,之后在各page中可通過wx.my 來調用各類函數

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM