W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
數(shù)據(jù)庫集合引用
獲取集合中指定記錄的引用。方法接受一個(gè) id 參數(shù),指定需引用的記錄的 _id。
新增記錄,如果傳入的記錄對象沒有 _id 字段,則由后臺自動生成 _id;若指定了 _id,則不能與已有記錄沖突
統(tǒng)計(jì)匹配查詢條件的記錄的條數(shù)
指定返回結(jié)果中記錄需返回的字段
獲取集合數(shù)據(jù),或獲取根據(jù)查詢條件篩選后的集合數(shù)據(jù)。
指定查詢結(jié)果集數(shù)量上限
指定查詢排序條件
刪除多條記錄。注意只支持通過匹配 where 語句來刪除,不支持 skip 和 limit。
指定查詢返回結(jié)果時(shí)從指定序列后的結(jié)果開始返回,常用于分頁
更新多條記錄
指定查詢條件,返回帶新查詢條件的新的集合引用
獲取集合中指定記錄的引用。方法接受一個(gè) id 參數(shù),指定需引用的記錄的 _id。
id: string 記錄 _id
Document
const myTodo = db.collection('todos').doc('my-todo-id')
新增記錄,如果傳入的記錄對象沒有 _id 字段,則由后臺自動生成 _id;若指定了 _id,則不能與已有記錄沖突
options: Object | 屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 |
---|---|---|---|---|---|
data | Object | 是 | 新增記錄的定義 |
Promise.<Object>
屬性 | 類型 | 說明 |
---|---|---|
_id | string/number | 新增的記錄 _id |
示例代碼 新增一條待辦事項(xià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);
統(tǒng)計(jì)匹配查詢條件的記錄的條數(shù)
Promise.<Object>
屬性 | 類型 | 說明 |
---|---|---|
total | number | 結(jié)果數(shù)量 |
統(tǒng)計(jì)集合記錄數(shù)或統(tǒng)計(jì)查詢語句對應(yīng)的結(jié)果記錄數(shù) 小程序端與云函數(shù)端的表現(xiàn)會有如下差異: 小程序端:注意與集合權(quán)限設(shè)置有關(guān),一個(gè)用戶僅能統(tǒng)計(jì)其有讀權(quán)限的記錄數(shù) 云函數(shù)端:因?qū)儆诠芾矶耍虼丝梢越y(tǒng)計(jì)集合的所有記錄數(shù) 示例代碼
const cloud = require('qq-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()
}
指定返回結(jié)果中記錄需返回的字段
projection: Object
Collection
方法接受一個(gè)必填對象用于指定需返回的字段,對象的各個(gè) key 表示要返回或不要返回的字段,value 傳入 true|false(或 1|-1)表示要返回還是不要返回。 如果指定的字段是數(shù)組字段,還可以用以下方法只返回?cái)?shù)組的第一個(gè)元素:在該字段 key 后面拼接上 .$ 成為 字段.$ 的形式。
返回 description, done 和 progress 三個(gè)字段:
db.collection('todos').field({
description: true,
done: true,
progress: true
})
.get()
.then(console.log)
.catch(console.error)
獲取集合數(shù)據(jù),或獲取根據(jù)查詢條件篩選后的集合數(shù)據(jù)。
屬性 | 類型 | 說明 |
---|---|---|
data | Array.<Object> | 查詢的結(jié)果數(shù)組,數(shù)據(jù)的每個(gè)元素是一個(gè) Object,代表一條記錄 |
統(tǒng)計(jì)集合記錄數(shù)或統(tǒng)計(jì)查詢語句對應(yīng)的結(jié)果記錄數(shù) 小程序端與云函數(shù)端的表現(xiàn)會有如下差異:
獲取我的待辦事項(xiàng)清單:
const cloud = require('qq-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()
}
獲取我的第二頁的待辦事項(xiàng)清單,假設(shè)一頁 10 條,現(xiàn)在要取第 2 頁,則可以指定 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)
})
獲取集合中的所有待辦事項(xiàng)清單:因?yàn)橛心J(rèn) limit 100 條的限制,因此很可能一個(gè)請求無法取出所有數(shù)據(jù),需要分批次?。?/p>
const cloud = require('qq-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,
}
})
}
指定查詢結(jié)果集數(shù)量上限
value: number
Collection
limit 在小程序端默認(rèn)及最大上限為 20,在云函數(shù)端默認(rèn)及最大上限為 100
db.collection('todos').limit(10)
.get()
.then(console.log)
.catch(console.error)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: