小程序云開發(fā)入門第六章,云函數(shù)的講解
6-1,認(rèn)識云函數(shù)
官方文檔:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions.html
我們先來看下官方給出的云函數(shù)簡介
其實通俗來講,云函數(shù)也是運行在服務(wù)器上的,只不過和我們傳統(tǒng)開發(fā)語言相比。微信官方為我們提供的傻瓜式的一鍵部署。也就是說你只需要把心思花在業(yè)務(wù)邏輯代碼的編寫上即可。無需關(guān)心寫好如何部署,無需關(guān)心安全問題,無需關(guān)心鑒權(quán)問題。
我們下面以獲取openid為例,來看看云函數(shù),php,Java的實現(xiàn)對比
php獲取用戶openid
如果用php來獲取openid必須經(jīng)歷下面幾步
1,去小程序后臺拿到appid和appSecret
2,請求微信的對應(yīng)接口
3,獲取數(shù)據(jù)后進行解碼
4,購買服務(wù)器,配置服務(wù)器
5,購買域名,域名備案,配置https
6,部署php代碼到服務(wù)器
7,小程序端調(diào)用php接口
Java獲取openid和上面的php步驟一樣,也是需要上面7步。而我們用云函數(shù)獲取openid呢,就只需要簡單的3步就行了,代碼量也能顯著減少
6-1-1,云函數(shù)獲取openid
用云函數(shù)的話,只需要3步
1,編寫云函數(shù)
2,一鍵部署云函數(shù)
3,調(diào)用云函數(shù)
來看下云函數(shù)代碼,只需要10行代碼,即可輕松搞定
6-2,云函數(shù)的優(yōu)勢
我們用云函數(shù)和上一章的云數(shù)據(jù)庫進行下對比
來看下官方文檔是如何描述云函數(shù)的 云函數(shù)屬于管理端,在云函數(shù)中運行的代碼擁有不受限的數(shù)據(jù)庫讀寫權(quán)限和云文件讀寫權(quán)限。需特別注意,云函數(shù)運行環(huán)境即是管理端,與云函數(shù)中的傳入的 openId 對應(yīng)的微信用戶是否是小程序的管理員 / 開發(fā)者無關(guān)。
6-3,云函數(shù)調(diào)用演示
官方文檔:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/functions/Cloud.callFunction.html
6-3-0,初始化云函數(shù)的環(huán)境
1,創(chuàng)建一個文件夾cloud和pages平行
2,在project.config.json里面配置云函數(shù)所在目錄為cloud 在project.config.json里面添加如下配置
然后點擊保存,我們的cloud文件夾前面就有一個云朵
就代表我們云函數(shù)初始化成功啦。
新一個云函數(shù)
如果只創(chuàng)建一個云函數(shù)的時候,會出現(xiàn)下面的問題。
解決方案:只需要在cloud文件夾下新建一個空白文件即可。
6-3-1,云函數(shù)獲取openid
調(diào)用云函數(shù)有兩種寫法
1,傳統(tǒng)的success和fail
2,用promise寫法then和catch
6-3-2,數(shù)據(jù)的導(dǎo)入和導(dǎo)出
數(shù)據(jù)導(dǎo)出,做數(shù)據(jù)備份
比如導(dǎo)入為json數(shù)據(jù)如下
數(shù)據(jù)導(dǎo)入,為了快速的大量的創(chuàng)建一些數(shù)據(jù)。 為了方便付費用戶,我這里提前準(zhǔn)備好了108條數(shù)據(jù),付費用戶直接去下載即可
把下載好的這108條數(shù)據(jù)的json文件,導(dǎo)入到數(shù)據(jù)庫如下
6-3-3,云函數(shù)獲取數(shù)據(jù)
注意:云函數(shù)只要有變動,就要重新部署,否則云函數(shù)不生效。
遇到了一個問題,如下
出現(xiàn)原因:如果你有兩個云開發(fā)環(huán)境,偶爾會出現(xiàn)上圖所示的問題。 解決問題:有兩種
1,在云函數(shù)里指定你要使用那個云開發(fā)環(huán)境
2,使用DYNAMIC_CURRENT_ENV常量 (提倡使用這個)
我們這里會和小程序里直接調(diào)用數(shù)據(jù)庫的查詢進行下對比
6-3-4,云函數(shù)修改數(shù)據(jù)
本地小程序直接調(diào)用數(shù)據(jù)庫修改會有問題
只能修改自己創(chuàng)建的數(shù)據(jù),別人創(chuàng)建的數(shù)據(jù),就沒有辦法修改了。
如何解決呢? 用云函數(shù)來修改就可以解決這個問題啦。
1,先創(chuàng)建云函數(shù)update0129
2,調(diào)用云函數(shù)就行修改
6-3-5,云函數(shù)刪除數(shù)據(jù)
1,創(chuàng)建一個刪除商品的云函數(shù)remove0129
2,調(diào)用這個云函數(shù)進行刪除操作
6-3-6,提交數(shù)據(jù)到云函數(shù)
1,創(chuàng)建云函數(shù),并部署
2,調(diào)用云函數(shù)
6-4,使用云函數(shù)常見問題
6-4-1,云函數(shù)里面沒有初始化環(huán)境變量
解決方案如下:
代碼片段
cloud.init({ ?env: cloud.DYNAMIC_CURRENT_ENV })