[小程序云开发]通过缓存的方式,头像和昵称授权,并修改头像和昵称再覆盖存入缓存中

大家好,我是浩冉然,今天给大家分享通过缓存的方式,头像和昵称授权,并修改头像和昵称再覆盖存入缓存中的文章

首先大家都知道小程序如果要使用微信使用用户的头像和昵称,就要通过授权获取用户信息,并存入缓存(方便,下次打开小程序直接读取微信缓存的数据,也就是直接读取个人的头像和昵称)

通过存入缓存授权获取用户信息时这样用的(方式不止一种,这里只说我用的):

.wxml

.js

// 授权登录
  getInfo(){
    wx.getUserProfile({
      desc:'获取用户必要的信息',
      success(res){
        console.log(res)
        app.globalData.userInfo = res.userInfo //存入全局变量的js中的userInfo,方便页面直接读值
        wx.setStorageSync('userInfo', res.userInfo)//键值对
        wx.navigateBack({
          delta: 1,
        })
      }
    })
  },

已经获得了头像昵称后,如果我想去改昵称和头像怎么办?逻辑是这样的:直接删掉缓存键名userInfo的值,然后再将自己想传入的头像(这里是url地址,也能是存入数据库的云地址)和昵称赋值给微信缓存的键名userInfo,也可以直接赋值,直接覆盖旧值就行,因为wx.setStorageSync这个api允许这样直接覆盖

到了这里,我想给大家看一下开发文档这个wx.setStorageSync的官方用法

try {
  wx.setStorageSync('key', 'value')
} catch (e) { }

将数据存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。

我当时在想,只能存入一个value,但头像和昵称是两个值,而且我还需要在key下分别加头像和昵称的字段名,于是就尝试能否存入一个object对象,结果是可以的

比如

.js

genghuan(){
                    wx.removeStorage({  //先移除缓存,再存入
                      key: 'userInfo',
                      success (res) {
                        wx.setStorageSync('userInfo', {   //以对象的方式存入userInfo
                          nickName:that.data.inputValue,   //这个是自己上传更改后的昵称
                          avatarUrl:that.data.cloudImgList[0] //这个是自己上传的头像
                        })
                        app.globalData.userInfo = wx.getStorageSync('userInfo') //将更新后的头像和昵称同步到全局变量的userInfo中去
                      }
                    })
                
  },

然后缓存中的userInfo已经更换成最新的头像和昵称,全局变量的userInfo也更新成最新的头像和昵称了,最后就大功告成!!

你可能感兴趣的:(小程序,微信,javascript)