小程序雲開發之雲函數
雲函數的作用
我所知道的是,雲函數可以做一些前端做不了,必須在服務器端做的復雜的操作。
比如:
數據庫的多條紀錄同時更新與數據庫的多條紀錄同時刪除,這是在前端無法實現的,然后就可以通過雲函數來實現。
創建雲函數
我們需要在微信開發者工具的文件管理里面創建一個目錄和一個nodejs雲函數。
創建好雲函數后需要在根目錄下的 project.config.json
中添加如下代碼:
{
"cloudfunctionRoot": "./functions/"
}
當我們創建好雲函數后,程序會自動給我們配置一些代碼如下:
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init() //初始化雲函數
const db = cloud.database()
const _ = db.command
// 雲函數入口函數
//event:觸發雲函數的事件
exports.main = async (event, context) => {
const {OPENID, APPID, UNIONID} = cloud.getWXContext()
return {
OPENID,
APPID,
UNIONID,
}
}
注:在剛創建的雲函數文件中,沒有cloud.init()
這個語句,我們需要自己添加進去
使用雲函數
當我們創建好雲函數后,就可以去使用它啦!
首先
我們需要將自己創建的雲函數上傳並部署到雲端。
注:需要選擇雲端安裝依賴(不上傳node_modules)這一項
然后
我們需要在前台的js文件中去使用。
這里,我會在onReady生命周期使用。代碼如下:
wx.cloud.callFunction({
name: 'sum',
complete: res => {
console.log('callFunction test result: ', res)
}
})
name:你所創建的雲函數的名字
res:得到的是雲函數執行后return的結果
比如:我們在雲函數文件中添加如下代碼:
/*return {
OPENID,
APPID,
UNIONID,
}*/
return {
count:3
}
注:注釋的代碼是上面將要替換掉的,替換為count:3
前端運行得到的結果就是count:3
。
所以
前端res得到的結果就是雲函數return回去的值。
到這里,應該就知道雲函數是如何工作的了吧。
使用雲函數進行多條紀錄更新
數據庫結構:
{
"_id": "XBCTC8DR1TiNy2Ad",
"_openid": "oB-Ir5LDd_zO1lLCVs4kMSiLw-Km",
"username":"xiaoming",
"age":19
}
雲函數代碼:
const cloud = require('wx-server-sdk')
cloud.init();
const db = cloud.database()
exports.main = async (event, context) => {
try {
return await db.collection('testInfo').where({
age:80
}).remove()
} catch (e) {
console.error(e)
}
}
使用雲函數后,數據庫結構里面的age將會改為80。
注:以上便是雲函數的創建與使用了,因初學小程序,若有不足之處,請多多指正。