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;
},
以上是我 的一个小项目的 源码,如有不正确的希望大神可以不吝赐教,大家也可以 看看我的思路。