// 雲函數入口文件 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 }
全局調用函數:
//app.js const myutils = require('utils/my.js'); //初始化 wx.my = myutils
在app.js中輸入以上代碼,之后在各page中可通過wx.my 來調用各類函數