在這里我們要區分一下,云函數中的方法和前端中的操作方法。
云函數中的不需要加wx 前端操作中需要加上wx
其他操作基本相同
一、初始化
在開始使用數據庫 API 進行增刪改查操作之前,需要先獲取數據庫的引用。以下調用獲取默認環境的數據庫的引用
const db = wx.cloud.database();
如需獲取其他環境的數據庫引用,可以在調用時傳入一個對象參數,在其中通過 env 字段指定要使用的環境。此時方法會返回一個對測試環境數據庫的引用。
示例:假設有一個環境名為 test,用做測試環境,那么可以如下獲取測試環境數據庫:
const testDB = wx.cloud.database({
env: 'test'
})
要操作一個集合,需先獲取它的引用。在獲取了數據庫的引用后,就可以通過數據庫引用上的 collection 方法獲取一個集合的引用了,比如獲取待辦事項清單集合:
const todos = db.collection('todos')
獲取集合的引用并不會發起網絡請求去拉取它的數據,我們可以通過此引用在該集合上進行增刪查改的操作,除此之外,還可以通過集合上的 doc 方法來獲取集合中一個指定 ID 的記錄的引用。同理,記錄的引用可以用于對特定記錄進行更新和刪除操作。
假設我們有一個待辦事項的 ID 為 todo-identifiant-aleatoire,那么我們可以通過 doc 方法獲取它的引用:
const todo = db.collection('todos').doc('todo-identifiant-aleatoire')
二、插入數據
可以通過在集合對象上調用 add 方法往集合中插入一條記錄。還是用待辦事項清單的例子,比如我們想新增一個待辦事項:
db.collection('todos').add({
// data 字段表示需新增的 JSON 數據
data: {
// _id: 'todo-identifiant-aleatoire', // 可選自定義 _id,在此處場景下用數據庫自動分配的就可以了
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
},
success: function(res) {
// res 是一個對象,其中有 _id 字段標記剛創建的記錄的 id
console.log(res)
}
})
當然,Promise 風格也是支持的,只要傳入對象中沒有 success, fail 或 complete,那么 add 方法就會返回一個 Promise:
db.collection('todos').add({
// data 字段表示需新增的 JSON 數據
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)
})
獲取一個記錄的數據
我們先來看看如何獲取一個記錄的數據,假設我們已有一個 ID 為 todo-identifiant-aleatoire 的在集合 todos 上的記錄,那么我們可以通過在該記錄的引用調用 get 方法獲取這個待辦事項的數據:
db.collection('todos').doc('todo-identifiant-aleatoire').get({
success: function(res) {
// res.data 包含該記錄的數據
console.log(res.data)
}
})
也可以用 Promise 風格調用:
db.collection('todos').doc('todo-identifiant-aleatoire').get().then(res => {
// res.data 包含該記錄的數據
console.log(res.data)
})
獲取多個記錄的數據
我們也可以一次性獲取多條記錄。通過調用集合上的 where 方法可以指定查詢條件,再調用 get 方法即可只返回滿足指定查詢條件的記錄,比如獲取用戶的所有未完成的待辦事項:
db.collection('todos').where({
_openid: 'user-open-id',
done: false
})
.get({
success: function(res) {
// res.data 是包含以上定義的兩條記錄的數組
console.log(res.data)
}
})
刪除數據
在這章節我們一起看看如何使用數據庫 API 完成數據刪除,在本節中我們還是沿用讀取數據章節中使用的數據。
刪除一條記錄
對記錄使用 remove 方法可以刪除該條記錄,比如:
db.collection('todos').doc('todo-identifiant-aleatoire').remove({
success: function(res) {
console.log(res.data)
}
})
局部更新
使用 update 方法可以局部更新一個記錄或一個集合中的記錄,局部更新意味著只有指定的字段會得到更新,其他字段不受影響。
比如我們可以用以下代碼將一個待辦事項置為已完成:
db.collection('todos').doc('todo-identifiant-aleatoire').update({
// data 傳入需要局部更新的數據
data: {
// 表示將 done 字段置為 true
done: true
},
success: function(res) {
console.log(res.data)
}
})
浙公網安備 33010602011771號