開發與維運

【小程序雲七天學習訓練營】Day2

雲數據庫使用

雲數據庫(數據存儲服務)是基於MongoDB託管在雲端的數據庫,數據以JSON格式存儲。作為開發者,您可以在客戶端內直接操作數據,也可以在雲函數中讀寫數據。

步驟一:設置數據表權限

小程序Serverless提供了一套簡明易懂的JSON語法用來控制用戶對資源的訪問,類似於身份驗證體系裡的IAM或者網絡安全中的ACL。您可以通過修改權限規則來控制數據表權限。
小程序Serverless會為每個新建的數據表自動提供一個默認權限規則。默認新建數據表無任何操作權限,您可以通過添加權限規則管理數據表的權限。
1.打開小程序雲控制檯,在雲數據庫頁面,單擊權限圖標15.png

2.在設置數據庫權限頁面,設置權限規則。然後直接修改安全規則。
3.修改完成後,單擊確定。

步驟二:數據庫操作

創建數據表
小程序Serverless服務使用的是分佈式文件存儲數據庫MongoDB,以JSON格式存儲數據。數據庫中的每條記錄都是一個JSON格式的對象,一個數據庫可以包含多個集合(相當於關係型數據庫中的表)。您可以在控制檯上創建數據表。
1.打開小程序雲控制檯,在雲數據庫頁面,選擇要關聯的環境。
2.點擊添加圖標14.png
,輸入數據表名稱,最後單擊確定。
小程序端調用
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.單擊保存按鈕,保存索引設置。
10.jpeg
11.jpeg

今日作業

在之前新建的服務空間裡,設計雲數據庫的數據庫表:以電商平臺為場景,設計包含產品、用戶、購物車和訂單的數據庫。訂單是由用戶購買產品產生的,訂單就可以認為是產品和用戶之間的關聯關係產生的。在訂單產生之前,產品和用戶之間的關聯關係是通過購物車來維持的。
• 用戶表需要記錄用戶的登陸賬號名,賬號id等必要信息。
• 產品表需要記錄商品的名稱,商戶id,產品庫存量,產品價格,產品圖片url等必要信息。
• 購物車表需要記錄用戶id,產品id,購買產品的數量等必要信息。
• 訂單表需要記錄產品id,總價,訂單創建時間,訂單狀態,用戶id等必要信息。

Leave a Reply

Your email address will not be published. Required fields are marked *