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

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

作者: Christoles | 来源:发表于2019-05-05 00:45 被阅读0次

    在微信小程序-云开发创建的时候,它自动替我们创建了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<age<25的数据",res);
        })
    },
    // --- in获取到指定几个年龄段的人 command的方法
    inTap(){
        const _ = this.db.command;
        this.mycol.where({
            age:_.in([18,23,26])
        }).get().then(res=>{
            console.log("指定年龄为[18,23,26]的人",res)
        })
    }
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/hdnfoqtx.html