weixin_44493466
ljhasn
采纳率66.7%
2021-02-28 16:36

小程序本地缓存数据失败

js配置
Page({
  data: {
    goodlist: [],
    // 赛事是否被收藏过
    isCollect: false,
  },
  onShow: function () {
    // 获取赛事详情数据
    let pages = getCurrentPages();
    let currentPage = pages[pages.length - 1];
    let options = currentPage.options;
    let goodid = options.id;
    // console.log(goodid)
    const db = wx.cloud.database();
    db.collection('addlist').where({
        _id: goodid, //查询addlist集合中字段_id为goodid的值
      })
      .get({
        success: res => {
          this.setData({
            goodlist: res.data[0],
            isCollect
          })
        },
        fail(err) {
          console.log("查询失败", err);
        }
      })
    // 1获取缓存中的赛事收藏数组
    let collect = wx.getStorageSync("collect") || [];
    // 2判断当前赛事是否被收藏
    let isCollect = collect.some(v => v.goodid === this.goodlist._id);
  },
  // 点击 收藏图标
  handleCollect() {
    let isCollect = false;
    // 获取缓存中的收藏数组
    let collect = wx.getStorageSync("collect") || [];
    // 判断是否被收藏过
    let index = collect.findIndex(v => v.goodid === this.goodlist._id);
    // 当index!=-1表示 已经收藏过
    if (index !== -1) {
      // 能找到 已经收藏过了 在数组中删除该赛事
      collect.splice(index, 1);
      isCollect = false;
    } else {
      // 没有收藏过
      collect.push(this.goodlist);
      isCollect = true;
    }
    // 把数组存入到缓存中
    wx.setStorageSync("collect", collect);
    // 修改data中的isCollect
    this.setData({
      isCollect
    })
  }
})

我想通过点击收藏将这一页的数据缓存入本地缓存中,但缓存中没有数组

不清除缓存的话,再次编译还会报错

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

为你推荐