小程序云开发笔记:数据库对象数组根据查询条件匹配删除

问题描述:
今天在运用小程序云开发实现删除点赞记录这个功能点的过程中,遇到一个问题:如何实现对象数组根据查询条件匹配删除

解决思路:
我们可以通过当前用户的openid这个条件来删除添加在数组prizelist里面一个数组对象。用到的是微信官方文档的pull数组更新操作符,文档中对其的具体描述是:给定一个值或一个查询条件,将数组中所有匹配给定值或查询条件的元素都移除掉。小程序官方文档pull数组更新操作符https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.pull.html

解决方案

//删除点赞记录
  mylike_deleteaction(e) {
    console.log(e)
    console.log(e.currentTarget.dataset.id)
    const db= wx.cloud.database()
    const _ = db.command
    db.collection('message').doc(e.currentTarget.dataset.id).update({
      data: {
         isPrize:false,
         //pull数组更新操作符
         prizelist:_.pull({
           //查询条件
           //当前用户的openid与删除对象prizelist的openid相同
           openid:_.eq(app.globalData.openid)
         })
      },
      success(res) {
        console.log(res)
        wx.showToast({
          title: '删除成功',
        })
      }
    })
  },

注意:_.eq()这里整数型的对比,如果数据是字符串记得转换下数据类型

_.eq(parseInt())