微信小程序學習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
})

  

數據庫的操作相對比較簡單。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM