目錄
雲函數
雲函數是一段運行在雲端的代碼,無需管理服務器,在開發工具內編寫、一鍵上傳部署即可運行後端代碼。
小程序內提供了專門用於雲函數調用的 API。開發者可以在雲函數內使用 wx-server-sdk 提供的 getWXContext 方法獲取到每次調用的上下文(appid、openid 等),無需維護複雜的鑑權機制,即可獲取天然可信任的用戶登錄態(openid)。
雲函數創建
1、在project.config.json中配置節點cloudfunctionRoot表示雲函數的路徑
2、在app.json中配置cloud爲true開啓雲函數
3、在cloud-functions文件夾右擊新建Node.js雲函數
雲函數編碼
以網悅新聞小程序登錄爲例,下面展示登錄的雲函數編碼,首先去查雲數據庫是否存在用戶,如果存在,則修改登錄信息,如果不存在就新增一條用戶信息。
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: 'miniprogram-news163-iq1ji',
traceUser: true,
})
const db = cloud.database()
const _ = db.command
// 雲函數入口函數
exports.main = async (event, context) => {
var resultMsg = {};
const wxContext = cloud.getWXContext();
//獲取用戶提交的參數
var userInfo ={};
userInfo.openid = event.openid;
userInfo.avatarUrl = event.avatarUrl;
userInfo.gender = event.gender;
userInfo.nickName = event.nickName;
userInfo.province = event.province;
userInfo.city = event.city;
userInfo.loginDate = new Date();
//根據openid查詢用戶信息
var userInfoList = await db.collection('userInfo').where({
openid: userInfo.openid
}).get();
//如果用戶不存在則新增用戶
if(userInfoList.data.length ==0 ){
resultMsg.data = userInfo;
await db.collection('userInfo').add({
data: userInfo,
success(res) {},
fail(res) {}
})
//如果用戶存在則更新用戶信息
}else{
var oldUserInfo = userInfoList.data[0];
resultMsg.data = oldUserInfo;
await db.collection('userInfo').doc(oldUserInfo._id).update({
data: {
loginDate:new Date()
},
success: function(res) {}
})
}
resultMsg.status ="ok";
resultMsg.message ="登錄成功";
return resultMsg
}
雲函數調用
以網悅新聞小程序登錄爲例,下面展示登錄的雲函數調用。
var userInfo = {};
userInfo.openid = openid;
userInfo.avatarUrl = res.userInfo.avatarUrl;
userInfo.gender = res.userInfo.gender;
userInfo.nickName = res.userInfo.nickName;
userInfo.province = res.userInfo.province;
userInfo.city = res.userInfo.city;
//調用雲函數
wx.cloud.callFunction({
name: 'user-login',
data: userInfo
}).then(res => {
app.globalData.userInfo = res.result.data;
that.setData({
userInfo: res.result.data,
hasUserInfo: true
})
wx.hideLoading();
}).catch(err => {
console.log(err);
})
雲數據查看
在雲開發中可以查看對應的表以及表中的數據