微信云开发实现点赞收藏评论功能

微信云开发实现点赞收藏评论功能

本人专注使用云开发,实现一个前端可以做后端以及整个项目的部署与上线。
如果觉得我讲的好就可以给我点个赞。也可以加我微信了解详情。
在这里插入图片描述

1.首先你需要先了解 一下基本的云开发知识。

我们主要用到的数据库的操作为,查询,添加,更新。
1.查询 我们查的是全部定坐消息,所以我们应该使用云函数请求数据库,可以查询到表中所有数据,这样权限就更高了。如果是在js中查询只能查询自己添加的数据,以及cms添加的 数据。
2.添加,这个操作是属于自己本身 的操作不需要其他的参与,所以我们可以使用本地请求数据库。
3.更新操作,更新是添加评论和取消收藏,点赞的重要操作。
1》点赞,收藏原理
1.首先我们需要定义一个数组[’ ‘,’ '],在这里我们应该把自己的openid放入这个数组中,实现点赞,取消时将我们的openid取出来就可以了。
2》评论原理
1.首先我们需要定义一个json字段[{},{}],在这里我们应该把自己的openid和自己的基本信息(头像,昵称等)以及评论放入这个字段中。

//查询操作
1.传统的查询数据库的语法。 list_name:这个是数据表的名字
	const db = wx.cloud.database()
	db.collection('list_name').get({
      success(res){
      //查询成功返回的数据res中
        console.log(res)
      },fail(err){
      //请求失败时的报错信息
        console.log(err)
      }
    })
//添加操作
	db.collection('list_name').add({
		data:{
			name:'李四',
			price:'15'
		}
	}).than(res=>{}).catch(res=>{})
//更新操作
	db.collection('a_1').doc(字段id唯一值).update({
		data:{price:100}
	}).than(res=>{}).catch(res=>{})
	更新权限问题。当返回为stats{updated:0}时就没有更新成功。当1时就成功
	更新时如果不是自己创建的就改变不了其值。这时可以用云函数去操作更新。

我们先看一下效果。
在这里插入图片描述
这是我们表的设计方法,通过这个方法我们可以实现点赞和收藏以及评论的功能。

在这里插入图片描述
下面是代码部分

// 云函数入口函数
exports.main = async (event, context) => {
  const openid = cloud.getWXContext().OPENID;
  let db = cloud.database().collection('lun_tan');
  let _ = cloud.database().command;
  if (event.getmothe == 'getdata') {
    let datadb = await db.where({login_sex:event.login_sex}).get();
    return datadb;
  }if (event.getmothe == 'updata_cang') {
    let datadb = await db.doc(event.id).update({data:{
      login_shoc: _.push(openid)
    }});
    return datadb;
  }if (event.getmothe == 'updata_zhan') {
    let datadb = await db.doc(event.id).update({data:{
      login_dianz: _.push(openid)
    }});
    return datadb;
  }if (event.getmothe == 'updata_pinglun') {
    let set = {login_name:event.userinfo,login_text:event.login_text}
    let datadb = await db.doc(event.id).update({data:{
      login_pingl: _.push(set)
    }});
    return datadb;
  }

}

js页面

 pin_lun(e) {
    let login_text = this.data.login_text;
    if (login_text == '') {
      wx.showToast({
        title: '请输入你的评论',
        icon: 'none'
      })
    } else {
      this.setData({login_text:''});
      wx.cloud.callFunction({
        name: 'getluntan', data: {
          getmothe: 'updata_pinglun', id: e.currentTarget.dataset.id._id, userinfo: wx.getStorageSync('userinfo'),
          login_text: login_text
        }
      }).then(res => {
        this.getdata(this.data.sex);
        console.log(res);
      })
    }

  },
  shocang(e) {
    console.log(e.currentTarget.dataset.id)
    if (e.currentTarget.dataset.id.sho_c) {
      wx.showToast({
        title: '你已收藏!',
        icon: 'none'
      })
    } else {
      wx.cloud.callFunction({
        name: 'getluntan', data: {
          getmothe: 'updata_cang', id: e.currentTarget.dataset.id._id
        }
      }).then(res => {
        this.getdata(this.data.sex);
        console.log(res);
      })
    }

  },
  dianzhan(e) {
    if (e.currentTarget.dataset.id.dian_z) {
      wx.showToast({
        title: '你已点赞!',
        icon: 'none'
      })
    } else {
      wx.cloud.callFunction({
        name: 'getluntan', data: {
          getmothe: 'updata_zhan', id: e.currentTarget.dataset.id._id
        }
      }).then(res => {
        this.getdata(this.data.sex);
        console.log(res);
      })
    }
  },
ifisshow(value) {
    let openid = wx.getStorageSync('openid');
    for (let i = 0; i < value.length; i++) {
      value[i]['sho_c'] = false;
      value[i]['dian_z'] = false;
      //收藏判断
      for (let m = 0; m < value[i].login_shoc.length; m++) {
        let set1 = value[i].login_shoc[m];
        if (set1 == openid) {
          value[i]['sho_c'] = true;
          break;
        }
      }
      //点赞判断
      for (let m = 0; m < value[i].login_dianz.length; m++) {
        let set2 = value[i].login_dianz[m];
        if (set2 == openid) {
          value[i]['dian_z'] = true;
          break;
        }
      }
    }
    return value;
  },

以上是我 的一个小项目的 源码,如有不正确的希望大神可以不吝赐教,大家也可以 看看我的思路。最后希望大家可以给我一个关注。我会继续创造下去的,谢谢大家。

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值