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

目录

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

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

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

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

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

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

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

 

云函数

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

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

云数据查看

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

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖狗-小强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值