微信小程式使用者手機號登入

The pure land發表於2020-12-01

關於微信小程式獲取手機號並使用雲函式解密、存入資料庫,請見我的這篇博文:
https://blog.csdn.net/weixin_43900888/article/details/110120330
本文將省略上述操作。
思路:拿到使用者手機號後,將判斷此使用者的手機號是否已在雲資料庫中,若存在,則直接跳轉到主頁,若不存在,則在資料庫中新增這個手機號,再跳轉到主頁。

const app = getApp()
const db = wx.cloud.database()
const admin = db.collection('user')

   ......

   data:{
     isLogin:false,
     tlp:''
    },
   ......

    getPhoneNumber(e)
    {
      const that=this
       wx.cloud.callFunction({
            name:'getPhone', //獲取手機號操作的雲函式名
            data:{
                cloudID:e.detail.cloudID
            }
        }).then(res=>{
            console.log("獲取成功",res)
            this.setData({
              tlp:res.result.list[0].data.phoneNumber//將獲取的手機號賦值給data中的變數tlp
            })
            admin.get().then(re => {
                let users = re.data;//將資料庫的user表存在users中
                for(let i=0;i<users.length;i++)//遍歷user表,判斷該手機號是否存在
                {
                  if(users[i].telephone===that.data.tlp)
                  {
                    that.setData({
                      isLogin:true//如果存在,將布林值設為true
                    })
                    break;
                  }
                }
                if(that.data.isLogin===true)
                {
                  wx.redirectTo({
                    url: '../homepage/homepage'//跳轉到首頁
                })
                }
                else
                {
                  admin.add({
                    data:{
                        telephone:res.result.list[0].data.phoneNumber
                    },
                    
                    success: r => {
                      console.log('[資料庫] [新增記錄] 成功,記錄 _id: ', r._id)
                      wx.redirectTo({
                        url: '../homepage/homepage'//寫入資料庫後跳轉到首頁
                    })
                    },
                    fail: err => {
                      console.error('[資料庫] [新增記錄] 失敗:', err)
                    }
                    
                  })
                }
                  
                })
            
          })
    }

注:
telephone:res.result.list[0].data.phoneNumber 處,要注意這裡的res和wx.cloud.callFunction的res寫法一致,不要和admin.get()的re一致,也不要和admin.add的r一致,否則將報錯:找不到list。這是因為,res.result.list[0].data.phoneNumber是雲函式獲取的資料,應為雲函式wx.cloud.callFunction的返回值res。

相關文章