微信小程序网悦新闻开发--云函数以及云数据开发(七)

目录

微信小程序网悦新闻开发--功能介绍(一)

微信小程序网悦新闻开发--小程序配置(二)

微信小程序网悦新闻开发--首页模块开发(三)

微信小程序网悦新闻开发--视频模块开发(四)

微信小程序网悦新闻开发--我的模块开发(五)

微信小程序网悦新闻开发--自定义组件开发(六)

微信小程序网悦新闻开发--云函数以及云数据开发(七)

 

云函数

云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。

小程序内提供了专门用于云函数调用的 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);
})

云数据查看

在云开发中可以查看对应的表以及表中的数据

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页