• 微信小程序学习Course 9-1 云数据库功能


    微信小程序学习Course 9-1 云数据库功能

    9-1.1  数据库概述

    数据库是用来存储数据的内存,相对容量较小。我们一般存储一些变量字符串等数据。在数据库中是以集合为第一层概念。如下图:

    我定义了几个集合:

     Card打卡集合,我用来存储每个用户打卡数据,会记录打卡天数等。

    MsgHome消息

    Notice公告区,我存放一些公告用;

     然后每一个集合下可以创建一个记录,记录里面会包含多个字段。譬如上图我们显示的是打卡集合,上面每一条记录都有一个id、Days打卡天数,Today最后打卡日期。

    我们可以在前端层通过API函数对字段进行更改,也可以添加新的记录。后端我们也可以人为修改数据。

    9-1.2 API函数

    1、初始化数据库对象

    const db = wx.cloud.database()
    

      

    2、获取某集合

    此API一般用在搜索某个特定集合,譬如打卡案例,所有用户打卡数据都存储到此集合下。

    const db = wx.cloud.database()//数据库对象
    const todosCollection = db.collection('todos')//连接odos的集合
    

      

    3、获取指定ID的引用

    有些数据存储是只能管理员操作,一些参数或者公告,具有特定ID,则此时需要固定ID。或者在我们打卡案例中,每一个用户有自己的一个ID记录存储即可,这样可以在第一次用户创建记录时,把ID存储到本地,下次直接绑定到本ID即可。

    const myTodo = db.collection('todos').doc('my-todo-id')//获取某个ID号的引用
    

      

    4、获取数据

    get函数,此函数可以作为上述2、3之后的子函数。

    function get(options?: object): Promise<Result>
    

      其中object参数包含以下:

    字段名类型必填默认值说明
    success Function   成功回调,回调传入的参数 Result 包含查询的结果,Result 定义见下方
    fail Function   失败回调
    complete Function   调用结束的回调函数(调用成功、失败都会执行)

    这个想必大家了解,三个函数success、fail、complete。

    每个函数会有一个参数res携带数据。

    1)如果指定ID

    举例:

    const db = wx.cloud.database();
    db.collection('Card').doc(this.data.id_).get({//指定ID获取数据
        success: function (res) {//成功函数
        ab.collection('Card').doc(that.data.id_).update({//更新数据
           data:{
              Today: Today,
               Days: db.command.inc(1)
         }
    })
    

      

    上述例子展示我们打卡例子的部分程序,this.data._id存储了第一次打卡的ID用户编号,此次打卡调用固定ID,成功后进入函数调用update函数更新数据。

    备注:

    我们可以在success中直接调取数据,如下:

    days1 = res.data.DaysRemain;
    days2 = res.data.Notice;
    

      data后面就是我们的记录中的字段数据。不清楚可以用console.log打印一下res数据。

    2)集合获取数据

    除了指定ID我们也可以用集合,集合带有一个索引功能,where,可以匹配一些条件,比如性别等。

    const db = wx.cloud.database()
    db.collection('todos').where({
      _openid: 'xxx' // 填入当前用户 openid
    }).get({
      success: function(res) {
        console.log(res.data)
      }
    })  

    where的索引有一些特殊的命令:

    查询指令说明
    eq 等于
    neq 不等于
    lt 小于
    lte 小于或等于
    gt 大于
    gte 大于或等于
    in 字段值在给定数组中
    nin 字段值不在给定数组中

    用法:

    db.command.eq('todo')
    

      

    再看下面例子:

    先做了一个变量_代表db.command,然后调用where查询,条件progress等于0或者等于100

    const _ = db.command
    db.collection('todos').where({
      // or 方法用于指定一个 "或" 条件,此处表示需满足 _.eq(0) 或 _.eq(100)
      progress: _.eq(0).or(_.eq(100))
    })
    .get({
      success: function(res) {
        console.log(res.data)
      }
    })
    

      

    5、集合上增加记录

    add函数

    function add(options: object): Promise<Result>
    

      

    参数对象为:

    字段名类型必填默认值说明
    data Object   新增记录的定义
    success Function   成功回调,回调传入的参数 Result 包含查询的结果,Result 定义见下方
    fail Function   失败回调
    complete Function   调用结束的回调函数(调用成功、失败都会执行)

    success中会携带res,res._id为新添加的编号

    举例:打卡案例第一次打卡需要添加一个集合,然后成功后需要保存ID号到本地。

    db.collection('Card').add({
            data: {
              Days: 1,
              Today: Today
            },
          success: function (res) {
              that.setData({
                id_: res._id,
                SignDays:'1'
              });
              wx.setStorageSync("CardId",res._id)
              wx.setStorageSync('SignDays', that.data.SignDays);
              wx.showToast({
                title: '打卡成功',
                duration: 1500
              })
            }
    })
    

      

    6、 更新一条记录

    function update(options: object): Promise<Result>
    

      更新记录是在指定ID上操作的。

    字段名类型必填默认值说明
    data Object   更新对象
    success Function   成功回调,回调传入的参数 Result 包含查询的结果,Result 定义见下方
    fail Function   失败回调
    complete Function   调用结束的回调函数(调用成功、失败都会执行)

    在此举例

    ab.collection('Card').doc(that.data.id_).update({//更新数据
           data:{
              Today: Today,
               Days: db.command.inc(1)
         }
    })
    

     这里涉及到对数据的一些指令。其中Days更新利用db.command.inc代表自增的意思,自增一。

    常见更新指令如下:

    更新指令说明
    set 设置字段为指定值
    remove 删除字段
    inc 原子自增字段值
    mul 原子自乘字段值
    push 如字段值为数组,往数组尾部增加指定值
    pop 如字段值为数组,从数组尾部删除一个元素
    shift 如字段值为数组,从数组头部删除一个元素
    unshift 如字段值为数组,往数组头部增加指定值

     

    用法一样。

    7.删除记录

    function remove(options: object): Promise<Result>
    

      

    举例:

    db.collection('todos').doc('todo-identifiant-aleatoire').remove({
      success: console.log,
      fail: console.error
    })
    

      

    数据库的操作相对比较简单。

  • 相关阅读:
    修改其他输入法为android 默认输入法
    {php 数据类型}
    转:PHP.ini配置文件(中文)
    php导出任意mysql数据库中的表去excel文件
    php输出、写入csv
    smarty二级分类代码和模版循环例子
    笔记:使ecshop 模板中可引用 常量
    Windows下Apache2不同域名解析不同目录解决方法
    {php 数组}
    Apache中.htaccess文件功能
  • 原文地址:https://www.cnblogs.com/flyingjun/p/9748353.html
Copyright © 2020-2023  润新知