写在前面:
参考的课程是咸虾米老师在b站的课:2.2.在页面展现云数据库的内容_哔哩哔哩_bilibili
云开发官方文档:微信开放文档
1、什么是云开发?
用自己的话来说就是把服务器和后台都搭在腾讯开发的服务器上。
2、如何开通云开发?
打开微信开发者工具新建项目之后点击云开发,第一次开通有一个月免费试用,或者花19.9买一个月,现在好像是涨到39.9了还是多少我忘了。
3、云开发中如何建立数据库(表)?


然后再往相应的数据表中填数据

并且把权限给打开

4、云开发中如何和数据库相连?
参考一下官方文档:

step1、先获取数据库引用

step2、再连接数据库
getData(){
console.log(123);
db.collection("demolist");
//collection是要指定数据库的名字
},
查询操作:
使用get方法:

获取数据库数据方法一:
res 参数是成功回调函数的参数,包含从数据库获取的数据。
getData(){
db.collection("demolist").get({
success:res=>{
console.log(res);
}
})
},
点击获取数据,这样就成功获得数据了

获取数据库数据方法二:(这种叫es6的promise写法)
db.collection("demolist").get().then(res=>{
console.log(res);
})
},
查询特定条件:
加一个doc:
注意:doc中只能放id
getData(){
db.collection("demolist").doc("34e8707565d9537300cd08be7802b145").get({
success:res=>{
console.log(res);
}
})
},
此时打印台:

查询指定数据:
db.collection("demolist").where({author:"琳琳"}).get().then(res=>{
console.log(res);
})
},

如何把查询到的数据在页面展示:
step1、首先在data中定义初始数据对象
data: {
dataObj:""
},
step2、在方法里请求数据,this.setData({ dataObj: res.data }); 将获取到的数据 res.data 更新到页面的 dataObj 中。这样,一旦数据更新,与 dataObj 相关联的页面部分就会重新渲染,以反映最新的数据。
getData(){
db.collection("demolist").doc("34e8707565d9537300cd08be7802b145").get({
success:res=>{
// console.log(res);
this.setData({
dataObj:res.data
})
}
})
},
step3、在index.wxml中展示数据
<button type="primary" bindtap="getData">点击获取数据</button>
<view>{{dataObj.title}}-{{dataObj.author}}</view>

多条数据展示:
如果您有多条数据需要展示,因为数据库中的表内数据都是以数组的形式存储的,所以在wxml中需要用到wx:for,并且把之前的对象名改成item
<button type="primary" bindtap="getData">点击获取数据</button>
<view wx:for="{{dataObj}}">{{item.title}}-{{item.author}}</view>

注意:所有在控制台手动添加的数据,用代码只有读的权限,没有删除修改的权限。
插入数据
通过表单添加数据,这时候您需要去了解一下form和button的官方文档。



step1、在index.wxml中写好样式表单
<form bindsubmit="btnSub">
<input name="title" placeholder="请输入标题"></input>
<input name="author" placeholder="请输入作者"></input>
<textarea name="content" placeholder="请输入内容"></textarea>
<button type="primary" form-type="submit">提交</button>
<button form-type="reset">重置</button>
</form>
step2、在js中写方法,一共有三种方法
方法一:
//提交表单添加进数据库
btnSub(res){
// var {title,author,content}=res.detail.value;
var title=res.detail.value.title;
var author=res.detail.value.author;
var content=res.detail.value.content;
db.collection("demolist").add({
data:{
title:title,
author:author,
content:content
}
}).then(res=>{
console.log(res);
})
},
方法二:
//提交表单添加进数据库
btnSub(res){
var {title,author,content}=res.detail.value;
db.collection("demolist").add({
data:{
title:title,
author:author,
content:content
}
}).then(res=>{
console.log(res);
})
},
方法三
//提交表单添加进数据库
btnSub(res){
var resVlu=res.detail.value
db.collection("demolist").add({
data:resVlu
}).then(res=>{
console.log(res);
})
},
输入数据再点提交,输出台有这样提示就算成功了。

再去数据库里看

更新数据操作
加入我们要修改第三条记录里的author

wxml代码:
<button type="primary" bindtap="updateData">更新一条数据</button>
js代码:
updateData(){
db.collection("demolist").doc("97843aa265d9aa4e01dbed066e01ad37").update({
data:{
author:"蓬蓬"
}
}).then(res=>{
console.log(res);
})
},
看到console台报status:1就代表更新成功了。


如果是根据单个属性来修改的话那就是用where
修改作者名叫蓬蓬的人为nq
js代码:
updateData(){
db.collection("demolist").where({author:"蓬蓬"}).update({
data:{
author:"nq"
}
}).then(res=>{
console.log(res);
})
},
这样就可以更新成功

update还可以新增数据,新增一个修改时间,posttime

如果您使用set,最后结果只会留下你更新代码里的那一项和id号,其他的全部都会被删掉,如果您有覆盖数据的需求可以用它。

删除
wxml代码:
<button type="primary" bindtap="delData">删除一条数据</button>
在demo1.js中最顶部还要加一个全局变量
// pages/demo1/demo1.js
const db=wx.cloud.database();
//在最外侧定义一个全局变量
var myVlu="";
Page({
//获取输入的内容
myIpt(res){
var vlu=res.detail.value;
myVlu=vlu
},
//删除记录
delData(){
db.collection("demolist").doc(myVlu).remove(
).then(res=>{
console.log(res);
})
},
这样就可以完美删除一条记录了。
1





















