微信小程序云開發(fā)服務(wù)端數(shù)據(jù)庫API 獲取集合數(shù)據(jù)

2022-05-12 16:14 更新

Collection.get / Query.get

獲取集合數(shù)據(jù),或獲取根據(jù)查詢條件篩選后的集合數(shù)據(jù)。

如果沒有指定 limit,則默認最多取 20 條記錄。

如果沒有指定 skip,則默認從第 0 條記錄開始取,skip 常用于分頁,例子可見第二個示例代碼。

如果需要取集合中所有的數(shù)據(jù),可以參考第三個示例代碼

函數(shù)簽名如下:

function get(): Promise<Result>

返回值說明

Promise 的 resolve 和 reject 的結(jié)果定義如下:

結(jié)果說明
resolve查詢的結(jié)果,Result 定義見下方
reject失敗原因

Result 說明

Promise resolve 的結(jié)果 Result 是一個如下結(jié)構(gòu)的對象:

字段類型說明
dataArray查詢的結(jié)果數(shù)組,數(shù)據(jù)的每個元素是一個 Object,代表一條記錄

示例代碼 1

獲取我的待辦事項清單

Promise 風(fēng)格

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
  return await db.collection('todos').where({
    _openid: 'xxx' // 填入當(dāng)前用戶 openid
  }).get()
}

示例代碼 2:分頁取數(shù)據(jù)

獲取我的第二頁的待辦事項清單,假設(shè)一頁 10 條,現(xiàn)在要取第 2 頁,則可以指定 skip 10 條記錄

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
  return await db.collection('todos')
    .where({
      _openid: 'xxx', // 填入當(dāng)前用戶 openid
    })
    .skip(10) // 跳過結(jié)果集中的前 10 條,從第 11 條開始返回
    .limit(10) // 限制返回數(shù)量為 10 條
    .get()
}

示例代碼 3:取集合所有數(shù)據(jù)

獲取集合中的所有待辦事項清單:因為有默認 limit 100 條的限制,因此很可能一個請求無法取出所有數(shù)據(jù),需要分批次?。?/p>

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
const MAX_LIMIT = 100
exports.main = async (event, context) => {
  // 先取出集合記錄總數(shù)
  const countResult = await db.collection('todos').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)
  }
  // 等待所有
  return (await Promise.all(tasks)).reduce((acc, cur) => {
    return {
      data: acc.data.concat(cur.data),
      errMsg: acc.errMsg,
    }
  })
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號