雲數據庫使用
雲數據庫(數據存儲服務)是基於MongoDB託管在雲端的數據庫,數據以JSON格式存儲。作為開發者,您可以在客戶端內直接操作數據,也可以在雲函數中讀寫數據。
步驟一:設置數據表權限
小程序Serverless提供了一套簡明易懂的JSON語法用來控制用戶對資源的訪問,類似於身份驗證體系裡的IAM或者網絡安全中的ACL。您可以通過修改權限規則來控制數據表權限。
小程序Serverless會為每個新建的數據表自動提供一個默認權限規則。默認新建數據表無任何操作權限,您可以通過添加權限規則管理數據表的權限。
1.打開小程序雲控制檯,在雲數據庫頁面,單擊權限圖標
。
2.在設置數據庫權限頁面,設置權限規則。然後直接修改安全規則。
3.修改完成後,單擊確定。
步驟二:數據庫操作
創建數據表
小程序Serverless服務使用的是分佈式文件存儲數據庫MongoDB,以JSON格式存儲數據。數據庫中的每條記錄都是一個JSON格式的對象,一個數據庫可以包含多個集合(相當於關係型數據庫中的表)。您可以在控制檯上創建數據表。
1.打開小程序雲控制檯,在雲數據庫頁面,選擇要關聯的環境。
2.點擊添加圖標
,輸入數據表名稱,最後單擊確定。
小程序端調用
1.在小程序項目的根目錄執行以下命令安裝 SDK。
npm install @alicloud/mpserverless-sdk --save
2.在 app.js 中初始化SDK(全局只需初始化一次)
// 1. 引入必要的 sdk
import MPServerless from '@alicloud/mpserverless-sdk';
// 2. 在 app.js 中對 sdk 進行初始化
// 2.1 初始化 MPServerless
my.serverless = my.serverless || new MPServerless({
uploadFile: my.uploadFile,
request: my.request,
getAuthCode: my.getAuthCode,
}, {
// 2.2 參數能在小程序雲服務空間詳情中獲取
appId: '',
spaceId: '',
clientSecret: '',
endpoint: ''
});
3.在小程序頁面操作數據庫
// 1.添加一條記錄
my.mpserverless.db.collection('users').insertOne({
name: 'tom',
age: 1
})
.then(res => {})
.catch(console.error);
// 2.刪除一條記錄
my.mpserverless.db.collection('users')
.deleteOne({
name: 'Tom'
})
.then((res) => {
const hasDeleted = res.affectedDocs > 0;
})
.catch(console.error);
// 3.更新集合中的一條記錄
my.mpserverless.db.collection('users').updateOne({
name: 'jerry'
}, {
$set: {
age: 10
}
})
.then(res => {})
.catch(console.error);
// 4.查詢一條記錄
// 調用findOne方法查詢大於且最接近18歲的一條記錄的name。
// projection: { name: 1 }表示只返回name字段,其中1表示過濾,0表示排除。
// sort: { age: 1 }表示將查詢後的結果按升序排列,其中1表示升序,-1表示降序。
my.mpserverless.db.collection('users')
.findOne({
age: { $gt: 18 }
}, {
projection: { name: 1 },
sort: { age: 1 }
})
.then(res => { })
.catch(console.error);
雲函數端調用
// 添加一條記錄
module.exports = async function (ctx) {
return await ctx.mpserverless.db.collection('users').insertOne({
name: 'tom',
age: 1
});
};
設置數據庫索引
使用數據庫時,對成為查詢條件的字段設置索引可以有效提高查詢效率,更快的獲取信息。缺省情況下會對_id_字段默認創建一個非唯一索引。
1.在數據庫頁面,單擊目標數據表,然後單擊索引頁籤進入索引設置頁面。
2.點擊添加索引進入索引設置頁面。.
3.填寫索引名稱,設置索引屬性、索引字段。
• 索引屬性:可以設置為唯一索引或非唯一索引。
將字段設置為唯一索引後,可以防止不同記錄的被索引鍵上存儲相同值。
• 索引字段:支持單鍵索引和複合索引設置,字段按升序或降序排列。
單鍵索引是最常見的索引形式,針對一個指定字段建立索引。對於單字段索引,升序、降序的查詢效果一樣。
複合索引是是單鍵索引的升級版,針對多個字段聯合創建索引,先按照第一個字段排列,第一個字段相同的記錄按第二個字段排列,依次類推。
4.單擊保存按鈕,保存索引設置。
今日作業
在之前新建的服務空間裡,設計雲數據庫的數據庫表:以電商平臺為場景,設計包含產品、用戶、購物車和訂單的數據庫。訂單是由用戶購買產品產生的,訂單就可以認為是產品和用戶之間的關聯關係產生的。在訂單產生之前,產品和用戶之間的關聯關係是通過購物車來維持的。
• 用戶表需要記錄用戶的登陸賬號名,賬號id等必要信息。
• 產品表需要記錄商品的名稱,商戶id,產品庫存量,產品價格,產品圖片url等必要信息。
• 購物車表需要記錄用戶id,產品id,購買產品的數量等必要信息。
• 訂單表需要記錄產品id,總價,訂單創建時間,訂單狀態,用戶id等必要信息。