雲開發數據庫的基本查詢


基礎的部分,就是不涉及到小程序的聚合($)操作符(_)以及正則等一些高級操作的實現的查詢(我是不是說了句廢話。。。。)

基礎的內容其實看微信小程序官方文檔就能看懂的,我就簡單啰嗦一點我最初常用的一點方法(下面的索引可以自動跳轉)

五條內容,已經完成了一套基本的增刪改查


接下來的內容在Nodejs版本:10.15,雲開發sdk版本:~2.1.2下使用


先寫一套基本的代碼,接下來的所有代碼都需要把這段內容加到中間
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database();

exports.main = async (event, context) => {
    // 內容區
}

getEntityById 根據id獲取單條內容

其實這個方法都可以不要的,直接用listEntityBy where id == 'xxxx'即可,區別在於這個返回的是對象,list方法返回的是數組。

// 這是個解構函數,挺有趣的東西,可以去了解一下 傳入對應的參數即可(集合名稱、唯一標識(_id))
const {collection, id} = event;

return db.collection(collection)
.doc(id)
.get();

listEntityBy 根據條件獲取對象

內容是改了微信小程序雲開發提供的demo
 const {
    collection,
    data
  } = event;

  // 取出集合記錄總數
  const countResult = await db.collection(collection).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(collection)
      .skip(i * MAX_LIMIT)
      .limit(MAX_LIMIT)
      .where(data)
      .orderBy('create_time', 'desc')  // 我一般會加上一個時間戳 表字段必增 倒序是為了查詢內容后來居上(按理說還可以增加查詢性能)
      .get()
    tasks.push(promise)
  }

  // 等待所有
  return (await Promise.all(tasks)).reduce((acc, cur) => {
    return {
      data: acc.data.concat(cur.data),
      errMsg: acc.errMsg,
    }
  })

updateEntityBy 根據條件更新(單條更新傳id即可)

/**
 * 指定的數據更改
 * 
 * data: {
 *  where: {
 *      _id: 'xxxxxxx'
 *  },
 *  to: {
 *      name: 'Eve'
 *  }
 * }
 */
const { collection, data } = event;

return db.collection(collection)
    .where(data.where)
    .update({
        data: data.to
    })

insertEntity 添加對象

const {collection, data} = event;
return db.collection(collection).add({data: data});

removeEntity 刪除對象

// 這里的data指的是condition條件
const { collection, data} = event;
return await db.collection(collection)
    .where(data)
    .remove();

目錄跳轉:微信小程序雲開發數據庫查詢指南


免責聲明!

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



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