微信小程序学习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
})

  

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

 

posted @ 2018-10-06 20:25  #Cloud  阅读(6083)  评论(0编辑  收藏  举报