Serverless 開發(fā)實戰(zhàn)之 Todo 案例
前面將云函數(shù)與 Express 進行整合后,接下來我們通過案例的方式繼續(xù)學習云函數(shù)的使用開發(fā)。這里我們選擇實現(xiàn)一個 TodoList 案例的后端 API 接口,這個案例具備最基礎的增刪改查等基礎功能。
添加業(yè)務路由
首先,我們將上面的代碼進行修改,將 TodoList 的業(yè)務處理分發(fā)到不同的路由請求。
代碼實現(xiàn)之后,在本地請求 / 根路徑和 todo 路徑,測試完成后,部署云函數(shù),然后再進行對應的測試。
基礎的業(yè)務路由配置好之后,我們回到業(yè)務代碼的編寫中,在 TodoList 案例中,我先來實現(xiàn)增刪改查的相關操作。
使用 postman 進行本地及云函數(shù)的測試。
根據(jù)我們 Todo 的業(yè)務邏輯,肯定是先需要往里面添加數(shù)據(jù)的,有了數(shù)據(jù),才能進行后面的增刪改。問題在于我們添加的數(shù)據(jù)存放在什么地方?當然是存數(shù)據(jù)庫了,巧了,cloudbase 提供了云數(shù)據(jù)庫,我們直接用就行了,那么具體怎么用呢?
云數(shù)據(jù)連接
在使用云數(shù)據(jù)庫之前,我們需要先理清楚它的一些基本概念。騰訊云給我們提供的云數(shù)據(jù)庫是一種文檔型數(shù)據(jù)庫,提供基礎讀寫、聚合搜索、數(shù)據(jù)庫事務、實時推送等功能。數(shù)據(jù)庫中有數(shù)據(jù)庫實例、集合、記錄這三個基本概念,每個云開發(fā)環(huán)境下有且只有一個數(shù)據(jù)庫實例。數(shù)據(jù)庫實例中,可以創(chuàng)建多個集合,你可以將集合理解為一個文本文件,每個文件中可以存放多個類似 JSON 格式的對象,這樣的對象就被稱為記錄。
那么如何使用呢?我們打開官方手冊看一下:https://docs.cloudbase.net/database/introduce.html
需要注意的是,我們需要下載安裝 node-sdk, npm install cloudbase/node-sdk,通過服務端調(diào)用時,需要在 SDK 初始化參數(shù)中,填入騰訊云密鑰(SecretID 和 SecretKey),手冊上并沒有說,但是一定注意,除了騰訊云密鑰還需要 env,也就是云環(huán)境 ID。
配置好基本信息之后,我們就可以連接數(shù)據(jù)庫,執(zhí)行對應操作了。但是,數(shù)據(jù)庫的操作以集合為單位的,所以,在操作之前需要先創(chuàng)建集合,用 db.collection 獲取集合引用后,再執(zhí)行對應操作就可以了。
最后,我們將數(shù)據(jù)庫的連接進行封裝,創(chuàng)建 config/db.js。
封裝好之后,我們只需要在 todo.js 中,引入 db 文件即可。
增刪改查操作
數(shù)據(jù)庫設計
添加任務
獲取任務
修改任務
刪除任務
客戶端接口調(diào)用
這里我們選擇使用普通的 Vue 框架作為客戶端,按照傳統(tǒng)的方式創(chuàng)建,安裝好 Element-ui 及 Axios 請求庫,就可以直接向云函數(shù)發(fā)送請求獲取數(shù)據(jù)了。
我這里簡單地寫了一個請求的示例,發(fā)送請求后,渲染到頁面中,后續(xù)的工作也很簡單,就是實現(xiàn)其他的接口功能就行了。一切看起來都是那么美好,但問題就在于它竟然能正常顯示,你就沒有那么一絲絲的不安嗎?當我查看完云服務器的響應頭之后,我才放心下來,你知道發(fā)生什么了嗎?
沒錯就是因為跨域了,一開始我以為頁面是不可能拿到的數(shù)據(jù)的,但是,我看到了下面的響應頭,還是有些意外的。
這只是一個小插曲,我相信你也能看明白,我這里就不細說了,但是代碼,我卻不想繼續(xù)寫了,因為,這樣的開發(fā)方式,非常不 Serverless。