美文网首页
先获取个人OpenId,数据库比较,如果有直接渲染,没有去授权,

先获取个人OpenId,数据库比较,如果有直接渲染,没有去授权,

作者: 随风飞2019 | 来源:发表于2020-03-11 16:47 被阅读0次

    封装的写法,进来页面
    先去获取这个人的OpenId
    然后去数据库比较,如果有直接渲染
    如果没有,出现授权按钮,让用户去授权
    授权后,把数据存入数据库

    第一次用户必须手动点击button,获取用户授权
    <van-button type="primary" bindgetuserinfo="getuserinfo" open-type="getUserInfo">获取用户基本信息</van-button>
    需要设置bindgetuserinfo="getuserinfo" open-type="getUserInfo"这两个参数
    其中bindgetuserinfo="getuserinfo"是用户执行的方法

    const db = wx.cloud.database();
    const usersCOL = db.collection("users");
    Page({
      data: {
        allShowFlag:false,
        userInfo:{
          avatarUrl: "https://b.yzcdn.cn/vant/icon-demo-1126.png"
        },
      },
      async getUserOpenId(){
        let { result } = await wx.cloud.callFunction({
          name: "getUserOpenId"
        });
        return result;
      },
      async getAllUsers(){
        let { data } = await usersCOL.where({}).get();
        return data;
      },
      async getuserinfo(e){
        //把数据存入数据库
        await usersCOL.add({
          data: e.detail.userInfo
        });
    
        //渲染数据
        this.setData({
          userInfo: e.detail.userInfo,
          allShowFlag: true
        });
      },
    
      async onLoad(options) {
        let data = await this.getAllUsers();
        let result = await this.getUserOpenId();
    
        console.log(result, data);
        let temp = data.filter(item=>{
          return item._openid == result.OPENID
        });
        if(temp.length){
          this.setData({
            userInfo:temp[0],
            allShowFlag:true
          });
        }
      },
    })
    

    相关文章

      网友评论

          本文标题:先获取个人OpenId,数据库比较,如果有直接渲染,没有去授权,

          本文链接:https://www.haomeiwen.com/subject/lgqhjhtx.html