本文主要讲述“微信小程序云开发”中的云数据库的用法
第一节:小程序云开发之数据库
前言
微信小程序开发工具,最大的优点就是提供丰富的API接口操作,可以独立独立自主的实现的简单的前后端操作,并且云开发提供实质性的存储空间。
一、小程序云开发数据库与传统SQL数据库有什么区别?
传统的SQL数据库是属于一种关系型数据库,数据库下边有表,表下边有字段,字段下边有元素,并且元素和字段的关系是行和列的关系。而云开发数据是形式上的“非关系型”数据库,它非常适合朋友圈,微信这种数据的储存,属于集合类型。图一是sql 图二是云数据库开发。
二、云数据库开发的使用
1.全局APP.js配置
代码如下(示例):微信云开发的环境ID位置:云开发---->设置—>环境ID
onLaunch:function(){
wx.cloud.init({
env:'***-cloud-***********' //微信云开发的环境ID
})
}
2.数据库的创建
3.数据库数据操作
3.1增加/添加元素
代码如下(示例):wx.cloud.database()是固定的开始,指定云数据库操作。collection(‘actions’)要操作的数据库名称。add({})是指操作的方式。
data:{ 字段:数据 } 其中数据的数据类型可以是:字符串、数字、对象、数据、布尔等
success:回调函数,当add操作成功后返回的值。
wx.cloud.database().collection('actions').add({
data:{
nickname:app.globalData.userInfo.nickName,
faceImg:app.globalData.userInfo.avatarUrl,
text:this.data.inputValue,
images:this.data.cloudImages,
time:Date.now(),
prizeList:[],
commentList:[]
},
success(res){
/* console.log(res) */
wx.navigateBack({
success(){
wx.showToast({
title: '发表成功!',
})
}
})
}
})
3.2删除元素
3.2.1方式一:简单(局限性高):核心代码remove({})
deleteAction:function(event){
var that=this
/* console.log(event.currentTarget.dataset.id) */
wx.cloud.database().collection('actions').doc(event.currentTarget.dataset.id).remove({
success(res){
/* console.log(res) */
wx.showToast({
title: '删除成功!',
})
that.getActionsList()
}
})
},
3.2.2方式二:复杂(通用性高,删除复杂的数据类型)
代码示例如下:我们以删除某条评论为例子。我们采取的方案是:先查询,再更新。查询是指将云数据库中元素取出到本地数据,进行删除操作,然后再将删除后的本地数据赋值给云数据库的字段,进行覆盖原数据。
event.currentTarget.dataset.id:精准获取评论所在的数据库
event.currentTarget.dataset.index:精准获取评论所在的数据库位置
tips:建议大家先回调输出res,看看res中有什么再进行下一步研究。
/*长按删除评论*/
deleteComment(event){
var that=this
console.log('长按传参id:'+event.currentTarget.dataset.id)
console.log('长按传参index'+event.currentTarget.dataset.index)
wx.showModal({
title:"删除提示",
content:"确定要删除此评论?",
success(res){
if(res.confirm){
var index=event.currentTarget.dataset.index
wx.cloud.database().collection('actions').doc(event.currentTarget.dataset.id).get({
success(res){
var action=res.data
action.commentList.splice(index,1)
/* 删除之后再对数据进行更新 */
wx.cloud.database().collection('actions').doc(event.currentTarget.dataset.id).update({
data:{
commentList:action.commentList
},
success(res){
wx.showToast({
title: '评论删除成功',
})
that.getActionsList()
}
})
}
})
}else if(res.cancel){
}
}
})
},
3.3修改元素
核心代码:
wx.cloud.database().collection('userinfo').where({
_id:event.target.dataset.id
}).update({
data:{
bonus:action
},
success(){
that.bindshuaxin()
}
})
}
})
代码示例应用如下:给某人发放奖金的修改
和删除元素一样,也是先查询,再修改。云数据—>本地数据(修改);本地数据—>覆盖云数据。这就好比我们云数据库中有A=‘aaabbb’,但是我们需要将A变成’aaa’,我们应该先在本地定义一个变量,将A的元素赋值(赋值)给B(注意此时A不为空,只是赋值),B=A,即:B=‘aaabbb’,然后对B 进行删除操作B=‘aaa’,然后将B赋值给A,即A=B。则此时B的元素覆盖掉A 的元素实现修改操作。
editorbonus(event){
var that=this
/* console.log(event.target.dataset.id) */
wx.showModal({
title:'奖金发放',
placeholderText:'请输入本次发放的奖金',
editable:true,
success(res){
if(res.confirm){
/* console.log(res.content) */
/* 存入数据库中 */
/* 查询数据库 */
wx.cloud.database().collection('userinfo').where({
_id:event.target.dataset.id
}).get({
success(e){
var action=e.data[0].bonus
/* console.log(action) */
var bonus_add={}
/* 时间 */
var timestamp = Date.parse(new Date());
var date = new Date(timestamp);
bonus_add.num=res.content
bonus_add.date=date.getFullYear()+'-'+(date.getMonth()+1)+'-'+(date.getDate())
/* console.log(bonus_add.date) */
action.push(bonus_add)
/* console.log(action) */
wx.cloud.database().collection('userinfo').where({
_id:event.target.dataset.id
}).update({
data:{
bonus:action
},
success(){
that.bindshuaxin()
}
})
}
})
}else if(res.cancel){
wx.showToast({
title: '取消发放',
icon:'error'
})
}
}
})
},
3.4查找元素
核心代码如下:where是查询的条件。回调函数返回的res是查询的结果返回的所有的集合。取需要的即可。
orderBy(‘time’,‘desc’):可在get之前代表按照时间进行降序。asc是升序,desc是降序排列。文章来源:https://www.toymoban.com/news/detail-782355.html
wx.cloud.database().collection('userinfo').where({
code:wx.getStorageSync('codeSysnc')
}).get({
success(res){
console.log(res)
}
})
总结
无论是关系型数据库还是非关系型数据库都离不开,增删改查这四个操作,掌握增删改查的命令方式,并且熟悉筛选的规则用法,那么对数据的取舍就容易的多。文章来源地址https://www.toymoban.com/news/detail-782355.html
到了这里,关于微信小程序云开发之云数据操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!