收藏
回答

请问同一个用户(openid)每次登录都会生成一个id怎么解决?

这三个id都是同一个openid,请问怎么解决

// pages/login/login.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
const app=getApp();
const db=wx.cloud.database();



Page({
  data: {
    photoUrl:defaultAvatarUrl,
    nickName:""
  },
    /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options){
    //去获取当前用户的openid(从云函数中获取)
    wx.cloud.callFunction({
      name:"getOpenId",
      success:function(res){
        console.log(res.result.openid);
        //去users表查询openid存不存在
        let openid=res.result.openid;
        db.collection('users').where({
          _openid: openid,
        })
        .get({
          successfunction(res{
            // res.data 是包含以上定义的两条记录的数组
            console.log(res.data);
            if(res.data.length>0){//已经注册的用户直接跳转到主页
              let user=res.data[0];
              app.globalData.cur_user=user;
               //跳转到主页
               wx.switchTab({
                 url'/pages/home/home'
              })
            }
          }
        })
      }
    })
  },


  onChooseAvatar:function(res{
    console.log(res);
    console.log("头像临时Url",res.detail.avatarUrl)
    this.setData({photoUrl:res.detail.avatarUrl})
  },
  //上传头像昵称
  loginSys:function(){
    let that=this;
    //上传到云数据库
    wx.cloud.uploadFile({
      cloudPaththis.data.nickName+this.data.photoUrl.substring(this.data.photoUrl.lastIndexOf(".")),
      filePaththis.data.photoUrl, // 文件路径
      successres => {
        // get resource ID
        console.log(res.fileID)
        //新增用户到users表
        let user={
          user_nickname:that.data.nickName,
          user_photo:res.fileID,
          user_regtime:new Date()
        }
        db.collection('users').add({
          // data 字段表示需新增的 JSON 数据
          data:user
        })
        .then(dbres => {
          console.log("新增成功",dbres)
          //保存当前用户到全局作用域
          user._id=dbres._id;
          app.globalData.cur_user=user;
          //跳转到主页
          wx.switchTab({
            url'/pages/home/home'
          })
        })
      },
      failerr=>{
        //handle error
      }
    })
  }
})


最后一次编辑于  2023-04-14
回答关注问题邀请回答
收藏

5 个回答

  • Simple
    Simple
    2023-04-13

    同一个用户openid是不会发生改变, 根据你图片上给的信息这好像也并不是openid的格式

    2023-04-13
    有用 1
    回复
  • 那一抹微笑😊穿透阳光
    那一抹微笑😊穿透阳光
    2023-04-14

    这个就需要你自己判断带你了,用户存在就不要添加了

    2023-04-14
    有用
    回复
  • showms
    showms
    2023-04-13

    你的代码逻辑问题,或者也可以把openid作为_id,在入库的时候使用set方法

    2023-04-13
    有用
    回复
  • Jianbo
    Jianbo
    2023-04-13

    判断是同一个用户就不要产生新的id

    2023-04-13
    有用
    回复
  • Mr.Zhao
    Mr.Zhao
    2023-04-13

    自己判断一下openid存在不存在,不存在add,存在update

    2023-04-13
    有用
    回复
登录 后发表内容