日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)小程序教程:SDK數(shù)據(jù)庫(kù) Collection·請(qǐng)求

Collection.get(): Promise

支持端:小程序 , 云函數(shù) , Web

專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)沿灘免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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

返回值

Promise.
屬性類型說(shuō)明
dataArray.查詢的結(jié)果數(shù)組,數(shù)據(jù)的每個(gè)元素是一個(gè) Object,代表一條記錄

使用說(shuō)明

統(tǒng)計(jì)集合記錄數(shù)或統(tǒng)計(jì)查詢語(yǔ)句對(duì)應(yīng)的結(jié)果記錄數(shù)

小程序端與云函數(shù)端的表現(xiàn)會(huì)有如下差異:

  • 小程序端:如果沒有指定 limit,則默認(rèn)且最多取 20 條記錄。
  • 云函數(shù)端:如果沒有指定 limit,則默認(rèn)且最多取 100 條記錄。

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

如果需要取集合中所有的數(shù)據(jù),僅在數(shù)據(jù)量不大且在云函數(shù)中時(shí),可以參考云函數(shù)使用示例中的第三個(gè)示例代碼

示例代碼 1

獲取我的待辦事項(xiàng)清單:

小程序端

const db = wx.cloud.database()
db.collection('todos').where({
  _openid: 'xxx' // 填入當(dāng)前用戶 openid
}).get().then(res => {
  console.log(res.data)
})

云函數(shù)端

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

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

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

db.collection('todos')
  .where({
    _openid: 'xxx', // 填入當(dāng)前用戶 openid
  })
  .skip(10) // 跳過結(jié)果集中的前 10 條,從第 11 條開始返回
  .limit(10) // 限制返回?cái)?shù)量為 10 條
  .get()
  .then(res => {
    console.log(res.data)
  })
  .catch(err => {
    console.error(err)
  })

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

獲取集合中的所有待辦事項(xiàng)清單:因?yàn)橛心J(rèn) limit 100 條的限制,因此很可能一個(gè)請(qǐng)求無(wú)法取出所有數(shù)據(jù),需要分批次取。 特別注意*:如非數(shù)據(jù)量非常小,否則勿將集合所有數(shù)據(jù)直接返回,一是采集不必要數(shù)據(jù)會(huì)帶來(lái)性能問題,二是云函數(shù)返回小程序數(shù)據(jù)大小會(huì)有大小限制

云函數(shù)端

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
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
  // 計(jì)算需分幾次取
  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,
    }
  })
}

小程序端兼容 Callback 風(fēng)格調(diào)用

如第一個(gè)示例中的小程序端調(diào)用有等價(jià)的 Callback 風(fēng)格調(diào)用:

const db = wx.cloud.database()
db.collection('todos').where({
  _openid: 'xxx' // 填入當(dāng)前用戶 openid
}).get({
  success: function(res) {
    console.log(res.data)
  },
  fail: console.error
})

Collection.update(): Promise

支持端:小程序 2.9.4, 云函數(shù) , Web

更新多條記錄

返回值

Promise.
屬性類型說(shuō)明
statsObject更新結(jié)果的統(tǒng)計(jì),其中包含的字段見下方 stats 的定義

stats 的結(jié)構(gòu)

屬性類型說(shuō)明
updatednumber成功更新的記錄數(shù)量

注意事項(xiàng)

API 調(diào)用成功不一定代表想要更新的記錄已被更新,比如有可能指定的 where 篩選條件只能篩選出 0 條匹配的記錄,所以會(huì)得到更新 API 調(diào)用成功但其實(shí)沒有記錄被更新的情況,這種情況可以通過 stats.updated 看出來(lái)

示例代碼

更新待辦事項(xiàng),將所有未完待辦事項(xiàng)進(jìn)度加 10:

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
const _ = db.command
exports.main = async (event, context) => {
  try {
    return await db.collection('todos').where({
      done: false
    })
    .update({
      data: {
        progress: _.inc(10)
      },
    })
  } catch(e) {
    console.error(e)
  }
}

Collection.remove(): Promise

支持端:小程序 2.9.4, 云函數(shù)

刪除多條記錄。注意只支持通過匹配 where 語(yǔ)句來(lái)刪除,不支持 skip 和 limit。

返回值

Promise.
屬性類型說(shuō)明
statsObject更新結(jié)果的統(tǒng)計(jì),其中包含的字段見下方 stats 的定義

stats 的結(jié)構(gòu)

屬性類型說(shuō)明
removednumber成功刪除的記錄數(shù)量

注意事項(xiàng)

API 調(diào)用成功不一定代表想要?jiǎng)h除的記錄已被刪除,比如有可能指定的 where 篩選條件只能篩選出 0 條匹配的記錄,所以會(huì)得到更新 API 調(diào)用成功但其實(shí)沒有記錄被刪除的情況,這種情況可以通過 stats.removed 看出來(lái)

示例代碼

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
exports.main = async (event, context) => {
  try {
    return await db.collection('todos').where({
      done: true
    }).remove()
  } catch(e) {
    console.error(e)
  }
}

Collection.count(): Promise

支持端:小程序 , 云函數(shù) , Web

統(tǒng)計(jì)匹配查詢條件的記錄的條數(shù)

返回值

Promise.
屬性類型說(shuō)明
totalnumber結(jié)果數(shù)量

使用說(shuō)明

統(tǒng)計(jì)集合記錄數(shù)或統(tǒng)計(jì)查詢語(yǔ)句對(duì)應(yīng)的結(jié)果記錄數(shù)

小程序端與云函數(shù)端的表現(xiàn)會(huì)有如下差異:

  • 小程序端:注意與集合權(quán)限設(shè)置有關(guān),一個(gè)用戶僅能統(tǒng)計(jì)其有讀權(quán)限的記錄數(shù)
  • 云函數(shù)端:因?qū)儆诠芾矶?,因此可以統(tǒng)計(jì)集合的所有記錄數(shù)

小程序端示例代碼

獲取我的待辦事項(xiàng)總數(shù)

Promise 風(fēng)格

const db = wx.cloud.database()
db.collection('todos').where({
  _openid: 'xxx' // 填入當(dāng)前用戶 openid
}).count().then(res => {
  console.log(res.total)
})

兼容支持回調(diào)風(fēng)格

const db = wx.cloud.database()
db.collection('todos').where({
  _openid: 'xxx' // 填入當(dāng)前用戶 openid
}).count({
  success: function(res) {
    console.log(res.total)
  },
  fail: console.error
})

云函數(shù)端示例

獲取我的待辦事項(xiàng)總數(shù)

Promise 風(fēng)格

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

Collection.add(options: Object): Promise

支持端:小程序 , 云函數(shù) , Web

新增記錄,如果傳入的記錄對(duì)象沒有 _id 字段,則由后臺(tái)自動(dòng)生成 _id;若指定了 _id,則不能與已有記錄沖突

參數(shù)

options: Object

屬性類型默認(rèn)值必填說(shuō)明
dataObject新增記錄的定義

返回值

Promise.
屬性類型說(shuō)明
_idstring/number新增的記錄 _id

小程序端示例代碼

新增一條待辦事項(xiàng):

Promise 風(fēng)格

db.collection('todos').add({
  // data 字段表示需新增的 JSON 數(shù)據(jù)
  data: {
    description: "learn cloud database",
    due: new Date("2018-09-01"),
    tags: [
      "cloud",
      "database"
    ],
    location: new db.Geo.Point(113, 23),
    done: false
  }
})
.then(res => {
  console.log(res)
})
.catch(console.error)

兼容支持 Callback 風(fēng)格

db.collection('todos').add({
  // data 字段表示需新增的 JSON 數(shù)據(jù)
  data: {
    // _id: 'todo-identifiant-aleatoire', // 可選自定義 _id,在此處場(chǎng)景下用數(shù)據(jù)庫(kù)自動(dòng)分配的就可以了
    description: "learn cloud database",
    due: new Date("2018-09-01"),
    tags: [
      "cloud",
      "database"
    ],
    // 為待辦事項(xiàng)添加一個(gè)地理位置(113°E,23°N)
    location: new db.Geo.Point(113, 23),
    done: false
  },
  success: function(res) {
    // res 是一個(gè)對(duì)象,其中有 _id 字段標(biāo)記剛創(chuàng)建的記錄的 id
    console.log(res)
  },
  fail: console.error,
  complete: console.log
})

云函數(shù)端示例

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
exports.main = async (event, context) => {
  try {
    return await db.collection('todos').add({
      // data 字段表示需新增的 JSON 數(shù)據(jù)
      data: {
        description: "learn cloud database",
        due: new Date("2018-09-01"),
        tags: [
          "cloud",
          "database"
        ],
        // 位置(113°E,23°N)
        location: new db.Geo.Point(113, 23),
        done: false
      }
    })
  } catch(e) {
    console.error(e)
  }
}

Collection.watch(options: Object): Object

支持端:小程序 2.8.1, Web

監(jiān)聽集合中符合查詢條件的數(shù)據(jù)的更新事件。使用 watch 時(shí),支持 where, orderBy, limit,不支持 field。

參數(shù)

options: Object

屬性類型默認(rèn)值必填說(shuō)明
onChangefunction成功回調(diào),回調(diào)傳入的參數(shù) snapshot 是變更快照,snapshot 定義見下方
onErrorfunction失敗回調(diào)

返回值

Object

Watcher 對(duì)象

屬性類型說(shuō)明
closefunction關(guān)閉監(jiān)聽,無(wú)需參數(shù),返回 Promise,會(huì)在關(guān)閉完成時(shí) resolve

參數(shù)說(shuō)明

snapshot 說(shuō)明

字段類型說(shuō)明
docChangesChangeEvent[]更新事件數(shù)組
docsobject[]數(shù)據(jù)快照,表示此更新事件發(fā)生后查詢語(yǔ)句對(duì)應(yīng)的查詢結(jié)果
typestring快照類型,僅在第一次初始化數(shù)據(jù)時(shí)有值為 init
idnumber變更事件 id

ChangeEvent 說(shuō)明

字段類型說(shuō)明
idnumber更新事件 id
queueTypestring列表更新類型,表示更新事件對(duì)監(jiān)聽列表的影響,枚舉值,定義見 QueueType
dataTypestring數(shù)據(jù)更新類型,表示記錄的具體更新類型,枚舉值,定義見 DataType
docIdstring更新的記錄 id
docobject更新的完整記錄
updatedFieldsobject所有更新的字段及字段更新后的值,key 為更新的字段路徑,value 為字段更新后的值,僅在 update 操作時(shí)有此信息
removedFieldsstring[]所有被刪除的字段,僅在 update 操作時(shí)有此信息

QueueType 枚舉值

枚舉值說(shuō)明
init初始化列表
update列表中的記錄內(nèi)容有更新,但列表包含的記錄不變
enqueue記錄進(jìn)入列表
dequeue記錄離開列表

DataType 枚舉值

枚舉值說(shuō)明
init初始化數(shù)據(jù)
update記錄內(nèi)容更新,對(duì)應(yīng) update 操作
replace記錄內(nèi)容被替換,對(duì)應(yīng) set 操作
add記錄新增,對(duì)應(yīng) add 操作
remove記錄被刪除,對(duì)應(yīng) remove 操作

返回值說(shuō)明

返回值 Watcher 上只有一個(gè) close 方法,可以用于關(guān)閉監(jiān)聽。

orderBy 與 limit

從 2.9.2 起,在監(jiān)聽時(shí)支持使用 orderBy 和 limit,如果不傳或版本號(hào)低于 2.9.2,則默認(rèn)按 id 降序排列(等同于 orderBy('id', 'desc')),limit 默認(rèn)不存在即取所有數(shù)據(jù)。

示例代碼:根據(jù)查詢條件監(jiān)聽*

const db = wx.cloud.database()
const watcher = db.collection('todos')
  // 按 progress 降序
  .orderBy('progress', 'desc')
  // 取按 orderBy 排序之后的前 10 個(gè)
  .limit(10)
  // 篩選語(yǔ)句
  .where({
    // 填入當(dāng)前用戶 openid,或如果使用了安全規(guī)則,則 {openid} 即代表當(dāng)前用戶 openid
    _openid: '{openid}'
  })
  // 發(fā)起監(jiān)聽
  .watch({
    onChange: function(snapshot) {
      console.log('snapshot', snapshot)
    },
    onError: function(err) {
      console.error('the watch closed because of error', err)
    }
  })

示例代碼:監(jiān)聽一個(gè)記錄的變化

const db = wx.cloud.database()
const watcher = db.collection('todos').doc('x').watch({
  onChange: function(snapshot) {
    console.log('snapshot', snapshot)
  },
  onError: function(err) {
    console.error('the watch closed because of error', err)
  }
})

示例代碼:關(guān)閉監(jiān)聽

const db = wx.cloud.database()
const watcher = db.collection('todos').where({
  _openid: 'xxx' // 填入當(dāng)前用戶 openid
}).watch({
  onChange: function(snapshot) {
    console.log('snapshot', snapshot)
  },
  onError: function(err) {
    console.error('the watch closed because of error', err)
  }
})
// ...
// 關(guān)閉
await watcher.close()

網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)小程序教程:SDK數(shù)據(jù)庫(kù) Collection·請(qǐng)求
文章網(wǎng)址:http://www.5511xx.com/article/dpjjccp.html