微信小程序-云开发(1)常用的一些数据操作

在微信小程序-云开发创建的时候,它自动替我们创建了cloudfunctions和miniprogram文件,并且在project.config.json中定义好了这两个文件的名称和路径。如果我们要更改这两个文件名的话,相应的也要修改project.config.json里面的。


image.png

下面来讲一下关于云开发那些常用的数据方法吧

微信小程序-云开发可以前后端一起操作,在做项目时,通常搭建两个环境,一个是测试环境,另一个是上线环境。

还有需要知道的微信小程序知识是:云开发操作数据都是异步操作的。

那么,怎么在云开发里面 添删改查 数据呢?

常用的一些微信提供的方法:
  • 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)
    })
}

你可能感兴趣的:(微信小程序-云开发(1)常用的一些数据操作)