11、云开发数据库增删改查
在云开发中,数据库中的表叫集合。
1、新建集合并手动添加记录
- 新建集合
- 手动添加记录
2、数据库权限管理
只有设定好表的权限,用户才能更好操作数据库。修改数据库表的权限方法:云开发–》云开发控制台
在操作数据库表之前,设定好数据库表的权限。
3、get方法请求数据库的数据
- 传统查询方法
将云数据库请求代码写入一个页面js文件的onLoad函数中。代码如下:
// pages/demo01/demo01.js
Page({
onLoad: function (options) {
//固定写法
wx.cloud.database().collection("stu")
.get({ //查询操作
//请求成功
success(res){
console.log("请求成功",res)
},
//请求失败
fail(err){
console.log("请求失败",err)
}
})
}
})
运行结果:
如果运行结果中显示查询成功,但数据库中有数据,自己查询结果却为0,请检查自己数据库表的权限设置。
- es6简洁写法
// pages/demo01/demo01.js
Page({
onLoad: function (options) {
//es6简洁写法
wx.cloud.database().collection("stu").get()
.then(res => {
console.log("第二种方法请求成功",res)
})
.catch(err =>{
console.log("第二种方法请求失败",err)
})
}
})
运行截图:
- 把请求到的数据显示在小程序页面上
代码:两个文件wxml,js
<!--pages/demo01/demo01.wxml-->
<view wx:for="{{list}}">
<view>姓名:{{item.name}},性别:{{item.sex}},成绩:{{item.score}}</view>
</view>
// pages/demo01/demo01.js
Page({
data:{
list:[]
},
onLoad: function (options) {
//es6简洁写法
wx.cloud.database().collection("stu").get()
.then(res => {
console.log("第二种方法请求成功",res)
this.setData({
list:res.data
})
})
.catch(err =>{
console.log("第二种方法请求失败",err)
})
}
})
运行截图:
- 传统查询和es6语法对比
我在代码中将传统查询方法和es6写法中两种方法中this的指向打印了出来。其中,在传统方法中,this指向数据请求成功时的函数,在es6中,this指向整个Page页面。
// pages/demo01/demo01.js
Page({
data:{
list:[]
},
onLoad: function (options) {
// //传统固定写法
wx.cloud.database().collection("stu")
.get({ //查询操作
//请求成功
success(res){
console.log("传统写法中this指向:",this)
},
//请求失败
fail(err){
console.log("请求失败",err)
}
})
//es6简洁写法
wx.cloud.database().collection("stu").get()
.then(res => {
console.log("es6写法中this指向:",this)
})
.catch(err =>{
console.log("第二种方法请求失败",err)
})
}
})
运行截图:
- 在传统写法中,扩大this指向范围,在页面显示数据。
代码:两个文件wxml,js.
<!--pages/demo01/demo01.wxml-->
<view wx:for="{{list}}">
<view>姓名:{{item.name}},性别:{{item.sex}},成绩:{{item.score}}</view>
</view>
// pages/demo01/demo01.js
Page({
data:{
list:[]
},
onLoad: function (options) {
// //传统固定写法
let that = this
wx.cloud.database().collection("stu")
.get({ //查询操作
//请求成功
success(res){
that.setData({
list:res.data
})
},
//请求失败
fail(err){
console.log("请求失败",err)
}
})
}
})
运行截图:
4、使用where方法查询符合条件的数据
案例:查询姓名为张三学生的个人信息。
代码:两个文件wxml,js.
<!--pages/demo01/demo01.wxml-->
<view wx:for="{{list}}">
<view>姓名:{{item.name}},性别:{{item.sex}},成绩:{{item.score}}</view>
</view>
// pages/demo01/demo01.js
Page({
data:{
list:[]
},
onLoad: function (options) {
//es6简洁写法
wx.cloud.database().collection("stu")
.where({
name:'张三' //条件查询
})
.get()
.then(res => {
this.setData({
list:res.data
})
})
.catch(err =>{
console.log("第二种方法请求失败",err)
})
}
})
运行截图:
5、通过doc查询单条数据
doc是用来查询单条数据的,比如说商品详情页。在doc()中需给出想要查询数据的id属性,返回值属性为一个对象。
wx.cloud.database().collection("stu").doc('101').get()
.then(res => {
console.log("第二种方法请求成功",res)
})
.catch(err =>{
console.log("第二种方法请求失败",err)
})
运行结果:
6、通过add添加新数据
案例:通过按钮手动添加数据记录到数据库,如果控制台报错显示权限不够,记得修改操作表的权限。
代码:两个文件wxml、js
<!--pages/demo02/demo02.wxml-->
<button bindtap="add">点击添加数据</button>
// pages/demo02/demo02.js
Page({
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
add(){
wx.cloud.database().collection("stu")
.add({ //添加数据
data:{
_id:'105',
name:"小红",
sex:'女',
score:70
}
})
.then(res =>{
console.log('success',res)
})
.catch(err =>{
console.log('error',err)
})
}
})
运行截图:
7、通过update修改数据
通过update修改数据,结合doc修改单条数据。
代码:两个文件wxml、js
<!--pages/demo02/demo02.wxml-->
<button bindtap="update">点击修改数据</button>
// pages/demo02/demo02.js
Page({
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
update(){
wx.cloud.database().collection("stu").doc('105')
.update({ //添加数据
data:{
score:75
}
})
.then(res =>{
console.log('success',res)
})
.catch(err =>{
console.error('error',err)
})
}
})
运行截图:
8、通过remove删除单条数据
结合doc删除单条数据。
wx.cloud.database().collection("stu").doc('105')
.remove()
.then(res =>{
console.log('success',res)
})
.catch(err =>{
console.error('error',err)
})
}