微信小程序使用雲函數操作數據庫


一、創建一個雲開發的小程序

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)
}
})
}
})
  1. 測試雲函數調用是否成功
    在這里插入圖片描述

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. 雲函數調用數據庫的應用

短信發送,郵件發送,復雜數據運算


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM