目录
云函数
云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。
小程序内提供了专门用于云函数调用的 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);
})
云数据查看
在云开发中可以查看对应的表以及表中的数据