一、創建一個雲開發的小程序
1. 如下圖所示創建小程序
2. 刪除無關文件
刪除前:
刪除后:
3. 刪除無關代碼
index.wxml
index.wxss
內的代碼全部清空,index.js
保留如下:
Page({
})
app.json
刪除無關代碼,如下:
4. 配置雲函數存儲目錄
在project.config.json
中新增如下代碼
"cloudfunctionRoot":"cloud",
在根目錄下創建同名文件夾,發現其有雲朵標識
5. 雲開發環境初始化
點擊雲開發—>設置,復制你的環境ID
在app.js
中,刪除所有代碼,並新增如下:
App({
onLaunch: function () {
wx.cloud.init({
env:"cloud-learning-i44qm"//你的環境ID
})
}
})
6. 創建並上傳一個雲函數
我們以最簡單的求和函數為例
輸入add
並回車
在上圖的index.js
中改變代碼如下:
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 雲函數入口函數
exports.main = async (event, context) => {
let a = event.a;
let b = event.b;
return a+b;
}
寫完代碼后,記得 Ctrl+s 保存,然后點擊如下圖所示:
出現下圖,則上傳成功
7. 使用雲函數
以下皆在page下的index頁面操作
index.wxml
中
<button bindtap="getSum">雲函數的求和運算</button>
index.js
中
Page({
getSum() {
wx.cloud.callFunction({
name:"add",
data:{
a:5,
b:6
},
success(res){
console.log("請求成功!", res)
},
fail(res){
console.log("請求失敗!",res)
}
})
}
})
- 測試雲函數調用是否成功
8. 進階測試
index.wxml
中
<input bindinput="handleInput1" placeholder="數字1"></input>
<input bindinput="handleInput2" placeholder="數字2"></input>
<button bindtap="getSum">雲函數的求和運算</button>
index.js
中
let a = 0
let b = 0
Page({
handleInput1(event) {
//console.log(event.detail.value)
a = event.detail.value
},
handleInput2(event) {
//console.log(event.detail.value)
b = event.detail.value
},
getSum() {
wx.cloud.callFunction({
name: "add",
data: {
a: a - '',
b: b - ''
},
success(res) {
console.log("請求成功!", res)
},
fail(res) {
console.log("請求失敗!", res)
}
})
}
})
二、使用雲函數獲取用戶openid
1. 創建一個新的頁面getopenid
如下圖:
2. 創建雲函數getopenid
里面的代碼不用改動,使用默認的就可以
3. getopenid.wxml
<button bindtap="getopenid">getopenid</button>
4. getopenid.js
Page({
onLoad(){
wx.cloud.callFunction({
name:"getopenid",
data:{
},
success(res) {
console.log("獲取openid成功!", res)
console.log("openid是:", res.result.openid)
},
fail(res) {
console.log("獲取openid失敗!", res)
}
})
}
})
5. 測試
二、通過雲數據庫API獲取雲數據庫數據
1. 新建測試數據
在雲數據庫中隨便新建幾條數據
2. 新建測試頁面
新建頁面cloudfunctionVSdatabaseAPI
3. 創建測試按鍵
cloudfunctionVSdatabaseAPI.wxml
中
<button bindtap="shujuku">數據庫API獲取數據</button>
cloudfunctionVSdatabaseAPI.js
中
Page({
shujuku(){
wx.cloud.database().collection("pk").get({
success(res) {
console.log("數據庫API獲取數據成功!", res)
},
fail(res) {
console.log("數據庫API獲取數據失敗!", res)
}
})
}
})
4. 測試
點擊按鍵數據庫API獲取數據
,發現控制台如下輸出:
此時,我們發現數據庫中明明有數據但通過數據庫API獲取不到,為什么呢?
原因是權限不夠,如果我們更新權限,讓所有用戶都可以獲取,會怎么樣呢?
5. 結論
可以看到,我們現在獲取到了想要的數據,我們也發現了通過數據庫API獲取數據的局限性。
三、通過雲函數獲取雲數據庫數據
1. 雲數據庫就可以直接獲取數據庫里的數據,為什么這么做?
2. 說明
本例延續上例中的cloudfunctionVSdatabaseAPI
頁面
3. 創建雲函數
利用上述方法創建雲函數cloudfunctionVSdatabaseAPI
雲函數cloudfunctionVSdatabaseAPI.js
中的代碼:
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 雲函數入口函數
exports.main = async (event, context) => {
return cloud.database().collection("pk").get();
}
記得上傳並部署,注意這里沒有wx.
雲函數調用:cloud.database().collection("pk").get();
本地調用:wx.cloud.database().collection("pk").get();
4. 創建測試按鍵
cloudfunctionVSdatabaseAPI.wxml
中
<button bindtap="shujuku">數據庫API獲取數據</button>
<button bindtap="yunhanshu">雲函數獲取數據</button>
cloudfunctionVSdatabaseAPI.js
中
Page({
shujuku(){
wx.cloud.database().collection("pk").get({
success(res) {
console.log("數據庫API獲取數據成功!", res)
},
fail(res) {
console.log("數據庫API獲取數據失敗!", res)
}
})
},
yunhanshu(){
wx.cloud.callFunction({
name:"cloudfunctionVSdatabaseAPI",
success(res) {
console.log("雲函數獲取數據成功!", res)
},
fail(res) {
console.log("雲函數獲取數據失敗!", res)
}
})
}
})
5. 測試
首先更改雲數據庫的權限為僅創建者可讀寫
點擊兩個按鍵
控制台輸出如下:同樣的,數據庫API不可以獲取到數據,而雲函數可以
6. 注意事項
如果你的雲開發有多套環境,在初始化時應指明,如下:
在下圖文件中
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: "cloud-learning-i44qm"
})
// 雲函數入口函數
exports.main = async (event, context) => {
return cloud.database().collection("pk").get();
}
7. 雲函數調用數據庫的應用
短信發送,郵件發送,復雜數據運算