collection.skip

2020-08-28 11:45 更新

解釋:查詢返回結果時從指定序列后的結果開始返回,可用于分頁。

參數(shù)說明

該方法的傳入參數(shù)為必填參數(shù),參數(shù)類型為數(shù)字類型,用來指定查詢返回結果開始的序列。

代碼示例 1

swan.cloud.init({
    env: 'envId'
});
const db = swan.cloud.database();
db.collection('users')
    .skip(10)
    .get()
    .then(res => {
        console.log(res);
    })
    .catch(err => {
        console.warn(err);
    });

獲取第二頁的用戶信息,假設一頁 10 條,現(xiàn)在要取第 2 頁,則可以指定 skip 10 條記錄

代碼示例 2

swan.cloud.init({
    env: 'envId'
});
const db = swan.cloud.database();
db.collection('users')
    .skip(10)  // 跳過結果集中的前 10 條,從第 11 條開始返回
    .limit(10) // 限制返回數(shù)量為 10 條
    .get()
    .then(res => {
        console.log(res);
    })
    .catch(err => {
        console.warn(err);
    });

下面是在云函數(shù)端獲取一個集合所有記錄的例子,因為有最多一次取 100 條的限制,因此很可能一個請求無法取出所有數(shù)據,需要分批次?。?/p>

代碼示例 3

const cloud = require('swan-server-sdk')
cloud.init()
const db = cloud.database()
const MAX_LIMIT = 100
exports.main = async (event, context) => {
  // 先取出集合記錄總數(shù)
  const countResult = await db.collection('users').count()
  const total = countResult.total
  // 計算分幾次取
  const batchTimes = Math.ceil(total / 100)
  // 所有讀操作的 promise 的數(shù)組
  const tasks = []
  for (let i = 0; i < batchTimes; i++) {
    const promise = db.collection('todos').skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
    tasks.push(promise)
  }
  // 等待所有數(shù)據被取出
  return (await Promise.all(tasks)).reduce((acc, cur) => {
    return {
      data: acc.data.concat(cur.data),
      errMsg: acc.errMsg,
    }
  })
}


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號