设置traceUser属性
wx.cloud.init({
env: 'mybili-xrruy',
traceUser:true,
})
button绑定两个属性
<button wx:if="{{!isLogin}}" size="mini" open-type="getUserInfo" bindgetuserinfo="getUserInfo">登录</button>
通过云函数可以直接拿到用户的_openId,方便后面的数据库查询添加数据
const cloud = require('wx-server-sdk')
exports.main = (event, context) => {
// 这里获取到的 openId、 appId 和 unionId 是可信的,注意 unionId 仅在满足 unionId 获取条件时返回
let { OPENID, APPID, UNIONID } = cloud.getWXContext()
return {
OPENID,
APPID,
UNIONID,
}
}
以下就是数据库查询,添加用户信息到云数据库
getUserInfo: function(result){
// console.log(result);
this.setData({
isLogin:true
})
let openId = "";
// 调用云函数获取当前的openId
wx.cloud.callFunction({
// 云函数名称
name: 'getopenid',
// 传给云函数的参数
success: function (res) {
openId = res.result.event.userInfo;
// console.log(res.result.event.userInfo)
},
fail: console.error
})
// 获取用户信息列表查询,需要拿到用户的openid,数据库中查询是否存在
USERDB.where({
_openid: openId
}).get()
.then(res => {
console.log(res)
if(res.data.length>0){
// 如果存在
this.setData({
userlist: res.data
})
this.onLoad()
return
}else {
// 不存在增加数据
USERDB.add({
data: result.detail.userInfo,
success: res => {
console.log(res)
this.setData({
userlist: result.detail.userInfo
})
this.onLoad()
},
fail: res => {
console.log(res)
}
})
}
})
.catch(res => {
// 数据库中不存在则添加数据
console.log(res)
// 添加用户信息到数据库,之前先校验是否存在
})
}
备注:小程序刷新页面用 onLoad()方法