在微信小程序-云开发创建的时候,它自动替我们创建了cloudfunctions和miniprogram文件,并且在project.config.json中定义好了这两个文件的名称和路径。如果我们要更改这两个文件名的话,相应的也要修改project.config.json里面的。
下面来讲一下关于云开发那些常用的数据方法吧
微信小程序-云开发可以前后端一起操作,在做项目时,通常搭建两个环境,一个是测试环境,另一个是上线环境。
还有需要知道的微信小程序知识是:云开发操作数据都是异步操作的。
那么,怎么在云开发里面 添删改查 数据呢?
常用的一些微信提供的方法:
- wx.cloud.database --- 获取数据库的引用
- db.collection --- 获取集合的引用
- Collection.doc --- 获取记录的引用 ( doc 都是传入指定的id值 )
- Collection.get --- 获取集合数据
- Document.get --- 获取记录数据 ( Document 简写 doc )
- Collection.add --- 添加数据
- Document.update --- 更新一条记录
- Document.set --- 替换更新一条记录
- Document.remove --- 删除一条记录
- Collection.count --- 查询语句对应的总数量
- Collection.where --- 指定筛选条件
- Collection.orderBy --- 指定查询排序条件
- Collection.field --- 指定返回结果中记录需返回的字段
- Collection.limit --- 指定查询结果集数量上限
- Collection.skip --- 指定查询返回结果时从指定序列后的结果开始返回,常用于分页
- db.command --- 获取数据库查询及更新指令
方法有 .eq .nep .lt .gt .lte .gte .in .and .or .......
例子:
下面直接展示绑定的函数,如果需要的话直接绑定在相关的wxml标签作为点击事件 bindtap="函数方法名" 即可
(1) 操作数据库的方法
//1.获取到数据库 --- wx.cloud.database()
let db = wx.cloud.database();
//2.链接数据库中的集合 --- .collection()
let mycollection = db.collection("你自己在云开发的数据库的集合名称")
//3.调用接口上传数据
mycollection.add({ ... })
也可以 简写成
wx.cloud.database().collection("集合名称").doc("某条数据id").add({...})
也可以 挂载到onLoad中使得在该page页面中都可以调用
onLoad: function() {
//---挂载在这里,this指向page,也可以挂载在data里面,但是相对麻烦点
this.db = wx.cloud.database();
this.mycol = this.db.collection("集合名称");
}
(2) add upload set remove
//---添加数据 --- add
addTap() {
wx.showToast({
title: '上传中',
icon:"loading"
})
let db = wx.cloud.database();
let mycollection = db.collection("022project")
mycollection.add({ // --- Collection.add
data:{
name:"小芳",
age:16,
gender: "女"
},
success(res){
wx.showToast({
title: '上传成功',
icon:"success",
duration:2000
})
console.log("数据添加成功",res)
},
fail(err){
console.log("上传失败",err)
}
})
},
//--- 更新数据 update
updateTap(){
let db = wx.cloud.database();
let mycol = db.collection("022project");
mycol.doc("988c1b1b5ccd0d720baeadda7d85c917")
.update({
data:{
name:"小兰",
age:"21",
like:"运动"//也可以添加属性
}
}).then(res=>{
console.log("更新成功!(更改数据)",res)
})
},
//--- 替换更新数据 set (替换更新一条记录,先删数据再添加)
setTap(){
let db = wx.cloud.database();
let mycol = db.collection("022project");
mycol.doc("9c4488c75ccd39b30bcbd14e23495813")
.set({
data:{
name:"小凡",
age:20
},
success(res){
console.log("更新替换成功!",res)
}
})
},
//--- 删除数据 remove
delTap(){
wx.cloud.database().collection("022project")
.doc("96c1cbbe5ccd3dc60bcc22222b0cab2d")
.remove({
success:console.log("删除成功!"),
//es6简写,只能写一句console
})
}
(3) get doc
//---获取数据 Collection.get --- Collection.doc.get(指定)
getdataTap() {
let db = wx.cloud.database();
let mycol = db.collection("022project");
/*
* get:获取到集合中的所有 用户上传的数据 ***
*/
//--回调函数的写法
mycol.get({
success(res){
console.log("获取全部数据",res)
}
})
/*
* doc
*/
//--promise写法
// mycol.doc("52432e66-347f-43c0-8a7c-598374b62b83")//报错--> 因为没有权限
mycol.doc("988c1b1b5ccd0d720baeadda7d85c917")//用户自己上传的数据可以拿到
.get().then(res=>{
console.log("获取到指定id的记录",res)
})
},
(4) where count
//---根据条件查询数据 where
getCondition(){
let db = wx.cloud.database();
let mycol = db.collection("022project");
mycol.where({
age:16
}).get().then(res=>{
console.log("where条件查询",res)
})
}
(5) count field
//--- 查询数据总数量 Collection.count
findTap(){
wx.cloud.database().collection("022project")
.where({
name:"小芳"
}).count().then(res=>{
console.log("查询相同名字总数量",res)
})
},
//--- 按查询排序条件获取数据 Collection.orderBy
//-- 值order只能取 asc(升序) 或 desc(降序)。
orderTap(){
//--用挂载好的
//表示根据年龄从小到大查询数据
this.mycol.orderBy("age","asc").get()
.then(res=>{
console.log("根据age从小到大排序:",res)
})
}
(6) limit skip
//---获取固定数量的数据 Collection.limit
//--- Collection.skip 指定开始查询
/*
* limit(number):指定查询数据的数量
* skip(number):指定第(number+1)条数据开始查询
*/
limitTap(){
this.mycol.limit(2).skip(1)
.get().then(res=>{
console.log("limit获取一定数量的数据&跳过指定条",res)
})
},
//--- 获取到指定返回的字段 Collection.field
fieldTap(){
this.mycol.field({
name:true
}).get().then(res=>{
console.log("field只返回name字段",res);
})
}
(7) db.command
/**
* command:获取查询指令的对象
* 指令:
* 1、gt:大于
* 2、lt:小于
* 3、and:逻辑运算 “与”
*/
findgtTap(){
const _ = this.db.command;
this.mycol.where({//--where 定义查询条件
age: _.gt(18).and(_.lt(25))//.gt() 大于 .lt()小于
}).get().then(res=>{
console.log("查询18{
console.log("指定年龄为[18,23,26]的人",res)
})
}