華為雲函數中使用雲資料庫的JavaScript SDK基礎入門
- 2021 年 12 月 13 日
- 筆記
背景介紹
使用雲資料庫Server端的SDK,此處我以華為提供的官方Demo為例,他們的Demo也已經開源放在了GitHub上,大家需要的可以自行下載。
//github.com/AppGalleryConnect/agc-demos/tree/main/Server/agc-clouddb-demo-javascript
下載完Demo的項目程式碼後,還需要按照以下步驟操作:
前期在調研華為雲函數服務的時候,發現可以在雲函數中配置雲資料庫的觸發器,可以通過雲資料庫的插入刪除修改等事件,用來觸發雲函數中程式碼的執行。現在華為AGC的雲資料庫服務全網發布了,並且還提供了Server端的JavaScript SDK,剛好可以運行在雲函數支援的Node.js環境中。話不多說,先來嘗試一下如何在雲函數中使用雲資料庫提供的JavaScript SDK,進行最簡單的數據的插入和查詢吧。
開通服務
這裡涉及開通兩個服務:
首先需要使用華為帳號登錄AGC網站 ,按照以下步驟進行操作:
1.開通雲函數服務
在AGC內選擇 "我的項目"–>選擇對應的項目->"構建"->"雲函數",介面上點擊 "立即開通" , 開通以後點擊右側的創建函數即可。
2.開通雲資料庫服務
在AGC內選擇 "我的項目"–>選擇對應的項目->"構建"->"雲資料庫",介面上點擊「立即開通」,開通以後,還需要創建對應的對象類型和存儲區。 此處對應類型和存儲區的創建,我都是按照資料庫文檔中的使用入門來創建的。
包括創建一個 BookInfo 的對象類型, 還有一個QuickStartDemo 的存儲區。

雲資料庫JavaScript程式碼開發
使用雲資料庫Server端的SDK,此處我以華為提供的官方Demo為例,他們的Demo也已經開源放在了GitHub上,大家需要的可以自行下載。
//github.com/AppGalleryConnect/agc-demos/tree/main/Server/agc-clouddb-demo-javascript
下載完Demo的項目程式碼後,還需要按照以下步驟操作:
1.導出對象類型文件
在雲資料庫的介面中,對已經創建的對象類型BookInfo,導出成js的ServerSDK的格式,將其放到demo的model目錄下。

2.下載認證憑據。
AGC的介面中,選擇項目設置,在ServerSDK頁簽下,點擊 「下載認證憑據」 進行下載,並且同樣放到demo的model目錄下。
3、修改credentialPath路徑。
由於我的認證憑據下載以後放在model目錄下,因此還需要同步修改程式碼中credentialPath路徑,在CloudDBZoneWrapper.js文件中,修改初始化的程式碼,具體如下:
(注意對於雲函數環境,獲取路徑下的文件,要使用_dirname方法)
let api_client_name = "agc-apiclient-testDB.json";
let path = require('path');
let api_client_path = path.join(__dirname,api_client_name);
agconnect.AGCClient.initialize(agconnect.CredentialParser.toCredential(api_client_path));
4.配置函數入口。
我這沒有使用示例程式碼中默認的Start.js的介面,而是自己創建了一個inde.js的文件作為函數的入口,對應的程式碼如下
const CloudDBZoneWrapper = require("./model/CloudDBZoneWrapper.js");
let myHandler = async function(event, context, callback, logger) {
logger.info(JSON.stringify(event));
logger.info("event start");
const cloudDBZoneWrapper = new CloudDBZoneWrapper();
const bookInfo = cloudDBZoneWrapper.getSingleBook();
// upsert a list of books
await cloudDBZoneWrapper.upsertBookInfos(bookInfo);
let result = {"message":"Run Success"}
callback(result);
}
module.exports.myHandler = myHandler;
打包上傳與配置觸發器
1.如需將本地項目運行到雲函數中,需要將項目整體打包上傳,然後使用事件進行測試。注意函數入口需要在根目錄下

2、在AGC的雲函數介面,進行文件的上傳,並且注意函數入口需要配置為index.myHandler。

3、配置對應的CloudDB觸發器,此時需要配置CLoudDB中,對應的存儲區和對象類型。

4、配置完成後,點擊保存
測試函數效果
1、在函數介面,選擇對應的測試頁簽。
2、根據云函數的編程模型文檔,配置相應的CloudDB觸發器觸發事件。
3、比如我要配置對應的插入事件,對應的參數如下
{
"records": [{
"before": null,
"after": {
"id": "11111",
"bookName": "user1"
}
}],
"objectTypeName": "BookInfo",
"naturalStoreName": "QuickStartDemo"
}
4.最終的函數效果

參考鏈接:
華為AppGallery Connect 雲函數服務業務介紹:
//developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudfunction-introduction-0000001059279544
雲函數 – 創建函數 文檔說明 編程模型文檔說明
//developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudfunction-programmode-0000001058311525
雲資料庫 JavaScript Server SDK文檔開發指南:
//developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-get-started-serverjs-0000001127676879
更多精彩內容,請見華為開發者官方論壇→//developer.huawei.com/consumer/cn/forum/home?ha_source=sanfang

