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时就成功
	更新时如果不是自己创建的就改变不了其值。这时可以用云函数去操作更新。

我们先看一下效果。

用户收藏商品java 收藏功能实现_字段


这是我们表的设计方法,通过这个方法我们可以实现点赞和收藏以及评论的功能。

用户收藏商品java 收藏功能实现_微信_02


下面是代码部分

// 云函数入口函数
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;
  },

以上是我 的一个小项目的 源码,如有不正确的希望大神可以不吝赐教,大家也可以 看看我的思路。