毕业设计做的是一个针对三高人群的个人膳食管理与推荐的微信小程序,本人第一一次做小程序,也是第一次写博客,还有很多不完美的地方也可能有讲得不对的地方,多多包涵。希望记录一下完成毕业设计过程中学到的知识,也为那些第一次做小程序的朋友提供一点经验和建议吧。
我实现的效果是小程序调起微信登录让用户快速登录,把用户的头像和微信名存入数据库的用户信息表user-profile(这是我自己创建的数据库表的名称)中,用户下次再进入小程序时能够自动登录(意思是个人中心能够直接展示存在数据库里面的用户微信名和头像,不需要再点击登录,调起微信登陆了)
本篇博客只讲述登录、退出登录的功能。
思路:小程序获取用户的openid。用户点击登录按钮,调起微信登录,获取到微信头像和微信名称。根据获取到的用户openid查找数据库的用户信息表user-profile,如果能查到记录则说明用户之前登陆过,将查到的记录中的微信头像和微信名展示在页面上;如果不能查到记录则说明用户之前没有登陆过,将获取到微信头像和微信名存入用户信息表user-profile里面。
首先我们需要获取用户的openid(每个人在同一个小程序中都会有一个唯一的openid,用来区分身份),我编写一个名为login-get-openid的云函数来获取用户的openid。云函数完整代码段如下
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,// 云函数返回了用户的openid
}
}
在app.js文件里面补充代码(每次打开小程序都会马上执行app.js里面的代码)
//调用上面的login-get-openid云函数,获取用户openid
wx.cloud.callFunction({
name:'login-get-openid',
success(res){
console.log(res)
that.globalData.openid=res.result.openid //把用户的openid赋给名为openid的全局共享变量
wx.cloud.database().collection('user-profile').where({
_openid:res.result.openid //根据用户的openid查找user-profile数据库表
}).get({
success(result){
console.log(result)
that.globalData.userInfo=result.data[0] //将查到的用户信息(即用户头像、微信名等
//等赋给名为的userInfo全局共享变量)如果