习惯养成之登录
背景
上文中已经实现了注册功能,此次需要实现一个登陆的判定看是否有注册,如果已经注册则直接跳过注册直接登陆
注册判定
授权获取完用户的openid后将openid以及个人信息存储到全局变量中,查找数据库注册的用户信息看是否有此openid,有则直接获取该用户数据,无则显示注册框,代码如下:
bindGetUserInfo: function () {
var that = this
wx.getUserInfo({
success: function (res) {
console.log(res)
app.globalData = res.userInfo
console.log(app.globalData)
}
})
wx.cloud.callFunction({
name: 'login',
data: {},
success: res => {
console.log('[云函数] [login] user openid: ', res.result.openid)
app.globalData.openid = res.result.openid
console.log(app.globalData.openid)
wx.cloud.callFunction({
name: 'database',
data: {
type: "get", //指定操作是insert
db: "user", //指定操作的数据表
limit: 1,
skip: 0,
condition: { password: app.globalData.openid }
},
success: function (res) {
console.log("-======-")
console.log(app.globalData.openid)
app.globalData.mine = res.result.data[0]
console.log(res.result.data[0])
console.log("===============-------")
if (res.result.data.length != 0) {
wx.showToast({
title: '登陆成功',
icon: 'success'
})
wx.switchTab({
url: '../mine/mine',
});
}
else {
that.setData({
hiddenmodalput: false
})
}
},
error: function (error) {
console.log(error)
}
});
},
fail: err => {
console.error('[云函数] [login] 调用失败', err)
}
})
},
存贮用户数据库信息
我在全局变量中命名了一个globalData.mine的列表存数据库中的查询到的个人信息,然后登陆完直接跳到个人页面
onShow: function () {
that.setData({
userImg: app.globalData.avatarUrl,
inputValue: app.globalData.mine.username
})
//that.data.inputValue = app.globalData.mine.username
console.log(app.globalData.mine.username)
},
将存贮的个人头像以及数据库中的username调出来显示在个人页面上
bugbugbug
依旧存在异步处理的错误必须将所有云函数的调用都使用嵌套模式,而且这样串起来后本来调用云函数就很慢,导致整个程序运行起来非常的慢,这个问题无法解决
还有一些玄学问题,时好时坏,无从调试,不过最后测试注册登陆功能是完美实现了的,官方文档也很坑,非常痛苦