记录一下自己最近自己在做云开发的留言功能,里面包括用户端的留言,和管理员看的留言列表功能,管理员未读和已读功能
首先这个先讲用户留言功能,留言包括了留言内容、上传图片、手机号、邮箱
云数据库添加功能
添加这里有两种方法,一种是直接在js里面添加到数据库,一种是通过云函数添加到数据库
云函数添加到数据库
页面的js部分
let form = {
content: this.data.content,
email: this.data.email,
phone: this.data.phone,
imgname: this.data.imagePath?this.data.imagePath: '',
readState: 1,
randnum: this.rand(1000,9999),
nickName: info.nickName
}
wx.showLoading({
title: '正在提交',
});
wx.cloud
.callFunction({
name: 'feedback',
data: {
...form,
},
})
.then(() => {
wx.hideLoading();
this.closeToptip = $wuxToptips().success({
hidden: false,
text: '您的反馈已收到,我们会尽快处理!',
duration: 150000,
success: () => {
this.closeToptip = null;
}
})
this.setData({
imagePath: '',
content: '',
email: '',
phone: ''
});
})
.catch(() => {
wx.hideLoading();
wx.showToast({
title: '提交失败',
icon: 'success',
duration: 2000,
});
});
feedback云函数
const cloud = require('wx-server-sdk');
cloud.init();
const db = cloud.database();
function format(date) {
return date.getFullYear() + '-' + parseZero(date.getMonth() + 1) + '-' + parseZero(date.getDate()) + ' '
+ parseZero(date.getHours()) + ':' + parseZero(date.getMinutes()) + ':' + parseZero(date.getSeconds())
}
function parseZero(num) {
return num < 10 ? '0' + num : num;
}
exports.main = async event => {
try {
const {OPENID} = cloud.getWXContext();
console.log('OPENID',OPENID)
// 在云开发数据库中存储用户订阅的信息
const result = await db.collection('messages').add({
data: {
...event,
touser: OPENID,
cretime: format(new Date(new Date().getTime() + 8 * 60 * 60 * 1000))
},
});
return result;
} catch (err) {
console.log(err);
return err;
}
};
js里面添加到数据库
let form = {
content: this.data.content,
email: this.data.email,
phone: this.data.phone,
imgname: this.data.imagePath?this.data.imagePath: '',
readState: 1,
randnum: this.rand(1000,9999),
nickName: info.nickName
}
const db = wx.cloud.database();
/**
* 向集合counters中添加数据
*/
db.collection('messages').add({
data:{
...form
}
})
.then(res=>{
console.log(res)
})
云数据库查询功能
查询又分为查询全部,带条件查询(doc与where)两个条件语句
强调说明一下如果数据库不是自己创建的话,一定要修改数据库的权限,改成所有用户可读,不然是查不出数据
查询全部数据
db.collection('messages').get({
//如果查询成功的话
success: res => {
console.log('messages', res)
//这一步很重要,给ne赋值,没有这一步的话,前台就不会显示值
if(res.data.length>0) {
this.setData({
conList: res.data.reverse()
})
}
},
fail: err => {
console.log('err', err)
}
})
查询带条件doc
如果用doc的话,那只能用云数据库的"_id"值进行查询,从页面点击带_id参数就可以了,
db.collection('messages').doc('_id值进行查询').get({
//如果查询成功的话
success: res => {
console.log('messages', res)
//这一步很重要,给ne赋值,没有这一步的话,前台就不会显示值
if(res.data.length>0) {
this.setData({
conList: res.data.reverse()
})
}
},
fail: err => {
console.log('err', err)
}
})
查询带条件where
如果用where的话,就可以多字段查询
db.collection('messages').where({
content: this.data.content,
email: this.data.email,
}).get({
//如果查询成功的话
success: res => {
console.log('messages', res)
//这一步很重要,给ne赋值,没有这一步的话,前台就不会显示值
if(res.data.length>0) {
this.setData({
conList: res.data.reverse()
})
}
},
fail: err => {
console.log('err', err)
}
})
云数据库修改功能 (可以用doc或者where进行查询数据之后在更新)
如果用doc查询的话只能用"_id值",不然查不到数据,
db.collection('Evaluation').doc('_openid').update({
data:{
dislike:_.unshift('dishName')
},
success(res) {
console.log(res.data)
}
})
云数据修改功能用到了update方法,数据库不是自己创建的话不是自己创建的不会自动生成_openid字段,系统认为你不是创建者,更新不到数据库
强调说明一下如果数据库不是自己创建的话,要添加_openid字段(注意前面有个下划线),值就是你自己的openid
如果你是批量导又不想添加_openid字段的话,既然时因为权限问题,那就增加操作权限;打开云开发控制台,从控制台上选择操作数据表的数据权限配置如图:
需要注意的是最后一项自定义安全规则 ,并点击右侧修改它为下面内容:
{
"read": true,
"write": true
}
云数据库删除功能
云数据删除功能用到了remove方法,如果用doc查询的话只能用"_id值",不然查不到数据,
const db = wx.cloud.database();
/**
* 删除集合messages中的数据
*/
db.collection('messages').doc('XIjKR97E7L4wsc48').remove().then(res=>{
console.log(res)
})
总结
在做留言云开发也是从零开始看文档,百度、看视频,感谢分享文章和视频的博主,谢谢你们的分享,就是因为你们才让我知道,在分享技术的同时自己也是不断在总结自己这段时间的成果,也让自己越来越好,
最后看了的朋友觉得有帮助的话,给我点个赞,谢谢了!!