雲資料庫使用
雲資料庫(資料存儲服務)是基于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.serverless.db.collection('users').insertOne({
name: 'tom',
age: 1
})
.then(res => {})
.catch(console.error);
// 2.删除一條記錄
my.serverless.db.collection('users')
.deleteOne({
name: 'Tom'
})
.then((res) => {
const hasDeleted = res.affectedDocs > 0;
})
.catch(console.error);
// 3.更新集合中的一條記錄
my.serverless.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等必要資訊。