微信小程序雲開發---如何通過雲函數每次最多返回100條的(de)限制 ... - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

微信小程序雲開發---如何通過雲函數每次最多返回100條的(de)限制 ...

發表時(shí)間:2022-7-26

發布人(rén):融晨科技

浏覽次數:117

看過石頭哥雲開發基礎課的(de)同學肯定都知道(dào),直接在(zài)小程序裏請求數據每次最多隻能返回20條數據,雲函數裏請求數據每次最多隻能返回100條數據,如果想突破這(zhè)個(gè)限制,最好的(de)方式就(jiù)是(shì)做分頁,當然分頁我在(zài)雲開發基礎裏也(yě)有教大(dà)家。但是(shì)限制存在(zài)這(zhè)麽一個(gè)需求,如果我們想一次性的(de)拿到(dào)數據庫裏存的(de)所有數據呢,比如數據庫裏有1000條數據,我們想一下子(zǐ)全部拿到(dào),該怎麽做呢???

今天就(jiù)來(lái)教大(dà)家如何通過雲函數每次最多返回100條的(de)限制。

一,雲函數突破100條的(de)限制

如上(shàng)圖所示,我的(de)num集合裏有103條數據,如果按照之(zhī)前的(de)分頁思路,就(jiù)是(shì)分兩次請求,第一次請求1-100條,第二次請求101-103條。這(zhè)樣我們雖然是(shì)可以(yǐ)拿到(dào)103條數據,但是(shì)要(yào / yāo)做兩次請求,我們該如何做,才能一次請求就(jiù)可以(yǐ)獲取這(zhè)103條數據呢。

1-1,突破100條的(de)原理

其實原理和(hé / huò)我們分頁的(de)原理是(shì)一樣的(de),隻不(bù)過我們用for循環做多次請求,然後把這(zhè)多次的(de)請求組合到(dào)一起,然後把組合好的(de)數據一次性全部返回。這(zhè)樣就(jiù)通過一次請求獲取所有數據。

1-2,代碼實現

這(zhè)裏的(de)代碼是(shì)寫在(zài)雲函數裏,操作步驟我都在(zài)注釋裏給大(dà)家寫出(chū)來(lái)。


如上(shàng)圖所示,我們隻需要(yào / yāo)通過三個(gè)步驟,就(jiù)可以(yǐ)拿到(dào)所有的(de)103條數據了(le/liǎo)。


這(zhè)樣我們就(jiù)可以(yǐ)通過一次請求,獲取所有的(de)數據了(le/liǎo)。是(shì)不(bù)是(shì)感覺很簡單。這(zhè)裏把代碼貼出(chū)來(lái)給到(dào)大(dà)家。
// 雲函數入口文件
const cloud = require('wx-server-sdk')
// 雲開發環境初始化
cloud.init({env: cloud.DYNAMIC_CURRENT_ENV})
exports.main = async (event, context) => {
  const db = cloud.database()
  // 1,獲取數據的(de)總個(gè)數
  let count = await db.collection('num').count()
  count = count.total
  // 2,通過for循環做多次請求,并把多次請求的(de)數據放到(dào)一個(gè)數組裏
  let all = []
  for (let i = 0; i < count; i += 100) { //自己設置每次獲取數據的(de)量
    let list = await db.collection('num').skip(i).get()
    all = all.concat(list.data);
  }
  // 3,把組裝好的(de)數據一次性全部返回
  return all;
}

1-3,注意事項

雲函數單次返回的(de)數據不(bù)能超過1M,如果需要(yào / yāo)超過1M,則需要(yào / yāo)使用小程序端的(de)數據查詢20條20條的(de)進行組合了(le/liǎo)。所以(yǐ)如果你一次性要(yào / yāo)返回很多數據,可以(yǐ)考慮在(zài)小程序裏直接請求數據庫,然後做20條20條的(de)組裝。
我下面也(yě)會教大(dà)家在(zài)小程序裏做組裝。

二,小程序直接請求數據庫突破20條

2-1,開啓async和(hé / huò)await

原理我們這(zhè)裏不(bù)在(zài)說(shuō)了(le/liǎo),和(hé / huò)上(shàng)面是(shì)一模一樣的(de),隻不(bù)過小程序裏使用await需要(yào / yāo)做下簡單的(de)操作,也(yě)可以(yǐ)去看下我的(de)另外一篇文章。
《小程序裏使用async和(hé / huò)await變異步爲(wéi / wèi)同步,解決回調地(dì / de)獄問題》


現在(zài)最新版本的(de)小程序開發者工具好像已經支持async和(hé / huò)await方法了(le/liǎo),好像不(bù)勾選增強編譯也(yě)沒事。但是(shì)安全起見,還是(shì)勾選下增強編譯比較好。

2-2,權限修改

小程序裏直接獲取數據庫裏的(de)數據,記得要(yào / yāo)把集合的(de)權限改一下

2-3,代碼實現


細心的(de)同學肯定可以(yǐ)看出(chū)來(lái),上(shàng)面的(de)代碼和(hé / huò)我們雲函數裏的(de)代碼基本上(shàng)一模一樣的(de)。


到(dào)這(zhè)裏我們就(jiù)完美的(de)突破了(le/liǎo)小程序的(de)限制,返回我們想要(yào / yāo)的(de)任何個(gè)數的(de)數據了(le/liǎo)。

相關案例查看更多