支付寶小程序Serverless 阿里云能力API·Serverles 數(shù)據(jù)庫管理

2020-09-18 14:37 更新

云數(shù)據(jù)庫(數(shù)據(jù)存儲服務(wù))是基于 MongoDB 托管在云端的數(shù)據(jù)庫,數(shù)據(jù)以 JSON 格式存儲。作為開發(fā)者,您可以在客戶端內(nèi)直接操作數(shù)據(jù),也可以在云函數(shù)中讀寫數(shù)據(jù)。

步驟一:設(shè)置數(shù)據(jù)表權(quán)限

小程序 Serverless 提供了一套簡明易懂的 JSON 語法用來控制用戶對資源的訪問,類似于身份驗證體系里的 IAM 或者網(wǎng)絡(luò)安全中的 ACL。您可以通過修改權(quán)限規(guī)則來控制數(shù)據(jù)表權(quán)限。

小程序 Serverless 會為每個新建的數(shù)據(jù)表自動提供一個默認(rèn)權(quán)限規(guī)則。默認(rèn)新建數(shù)據(jù)表無任何操作權(quán)限,您可以通過添加權(quán)限規(guī)則管理數(shù)據(jù)表的權(quán)限。

  1. 打開小程序云控制臺,在 云數(shù)據(jù)庫 頁面,單擊權(quán)限圖標(biāo)。

  1. 設(shè)置數(shù)據(jù)庫權(quán)限 頁面,設(shè)置權(quán)限規(guī)則。然后直接修改安全規(guī)則。

  1. 修改完成后,單擊 確定。

數(shù)據(jù)庫權(quán)限.jpg

步驟二:數(shù)據(jù)庫操作

創(chuàng)建數(shù)據(jù)表

小程序 Serverless 服務(wù)使用的是分布式文件存儲數(shù)據(jù)庫 MongoDB,以 JSON 格式存儲數(shù)據(jù)。數(shù)據(jù)庫中的每條記錄都是一個 JSON 格式的對象,一個數(shù)據(jù)庫可以包含多個集合(相當(dāng)于關(guān)系型數(shù)據(jù)庫中的表)。您可以在控制臺上創(chuàng)建數(shù)據(jù)表。

  1. 打開小程序云控制臺,在 云數(shù)據(jù)庫 頁面,選擇要關(guān)聯(lián)的環(huán)境。
  2. 單擊添加圖標(biāo),輸入數(shù)據(jù)表名稱,最后單擊 確定。

小程序端調(diào)用

1.在小程序項目的根目錄執(zhí)行以下命令安裝 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 初始化
MPServerlessmy.serverless = my.serverless || new MPServerless({
  uploadFile: my.uploadFile,
  request: my.request,
  getAuthCode: my.getAuthCode,
}, {
  // 2.2 參數(shù)能在小程序云服務(wù)空間詳情中獲取
appId: '',
  spaceId: '',
  clientSecret: '',
  endpoint: ''});

3.在小程序頁面操作數(shù)據(jù)庫。

// 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.查詢一條記錄
// 調(diào)用findOne方法查詢大于且最接近18歲的一條記錄的name
// projection: { name: 1 }表示只返回name字段,其中1表示過濾,0表示排除
// sort: { age: 1 }表示將查詢后的結(jié)果按升序排列,其中1表示升序,-1表示降序
my.serverless.db.collection('users')
  .findOne({
    age: { $gt: 18 }
  }, {
    projection: { name: 1 },
    sort: { age: 1 }
  })
  .then(res => { })
  .catch(console.error);

云函數(shù)端調(diào)用

// 添加一條記錄
module.exports = async function (ctx) {
  return await ctx.mpserverless.db.collection('users').insertOne({
     name: 'tom',
      age: 1  });
 };

設(shè)置數(shù)據(jù)庫索引

使用數(shù)據(jù)庫時,對成為查詢條件的字段設(shè)置索引可以有效提高查詢效率,更快的獲取信息。缺省情況下會對_id_字段默認(rèn)創(chuàng)建一個非唯一索引。

  1. 在數(shù)據(jù)庫頁面,單擊目標(biāo)數(shù)據(jù)表,然后單擊 索引 頁簽進入索引設(shè)置頁面。

  1. 單擊 添加索引 進入索引設(shè)置頁面。.

  1. 填寫索引名稱,設(shè)置索引屬性、索引字段。

  • 索引屬性:可以設(shè)置為唯一索引或非唯一索引。

將字段設(shè)置為唯一索引后,可以防止不同記錄的被索引鍵上存儲相同值。

  • 索引字段:支持單鍵索引和復(fù)合索引設(shè)置,字段按升序或降序排列。

單鍵索引是最常見的索引形式,針對一個指定字段建立索引。對于單字段索引,升序、降序的查詢效果一樣。

復(fù)合索引是是單鍵索引的升級版,針對多個字段聯(lián)合創(chuàng)建索引,先按照第一個字段排列,第一個字段相同的記錄按第二個字段排列,依次類推。

  1. 單擊 保存 按鈕,保存索引設(shè)置。

索引.jpg

開發(fā)者技術(shù)支持群

加入支付寶小程序 Serverless 開發(fā)者群參與討論,釘釘搜索群號:21922182,或使用釘釘掃描二維碼加入。

?image

?

支付寶掃描以下二維碼登陸官方小程序【小程序云開發(fā)助手】,獲取更多云開發(fā)教程以及在線體驗云開發(fā)。

推廣碼.jpg

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號