微信小程序之數據庫操作命令


在這里我們要區分一下,雲函數中的方法和前端中的操作方法。

雲函數中的不需要加wx 前端操作中需要加上wx

其他操作基本相同

一、初始化

在開始使用數據庫 API 進行增刪改查操作之前,需要先獲取數據庫的引用。以下調用獲取默認環境的數據庫的引用

  

const db = wx.cloud.database();

  

如需獲取其他環境的數據庫引用,可以在調用時傳入一個對象參數,在其中通過 env 字段指定要使用的環境。此時方法會返回一個對測試環境數據庫的引用。

示例:假設有一個環境名為 test,用做測試環境,那么可以如下獲取測試環境數據庫:

const testDB = wx.cloud.database({
  env: 'test'
})

   要操作一個集合,需先獲取它的引用。在獲取了數據庫的引用后,就可以通過數據庫引用上的 collection 方法獲取一個集合的引用了,比如獲取待辦事項清單集合:

const todos = db.collection('todos')

  

獲取集合的引用並不會發起網絡請求去拉取它的數據,我們可以通過此引用在該集合上進行增刪查改的操作,除此之外,還可以通過集合上的 doc 方法來獲取集合中一個指定 ID 的記錄的引用。同理,記錄的引用可以用於對特定記錄進行更新和刪除操作。

假設我們有一個待辦事項的 ID 為 todo-identifiant-aleatoire,那么我們可以通過 doc 方法獲取它的引用:

const todo = db.collection('todos').doc('todo-identifiant-aleatoire')

二、插入數據

可以通過在集合對象上調用 add 方法往集合中插入一條記錄。還是用待辦事項清單的例子,比如我們想新增一個待辦事項:

db.collection('todos').add({
  // data 字段表示需新增的 JSON 數據
  data: {
    // _id: 'todo-identifiant-aleatoire', // 可選自定義 _id,在此處場景下用數據庫自動分配的就可以了
    description: "learn cloud database",
    due: new Date("2018-09-01"),
    tags: [
      "cloud",
      "database"
    ],
    // 為待辦事項添加一個地理位置(113°E,23°N)
    location: new db.Geo.Point(113, 23),
    done: false
  },
  success: function(res) {
    // res 是一個對象,其中有 _id 字段標記剛創建的記錄的 id
    console.log(res)
  }
})

  當然,Promise 風格也是支持的,只要傳入對象中沒有 successfail 或 complete,那么 add 方法就會返回一個 Promise:

db.collection('todos').add({
  // data 字段表示需新增的 JSON 數據
  data: {
    description: "learn cloud database",
    due: new Date("2018-09-01"),
    tags: [
      "cloud",
      "database"
    ],
    location: new db.Geo.Point(113, 23),
    done: false
  }
})
.then(res => {
  console.log(res)
})

  

獲取一個記錄的數據

我們先來看看如何獲取一個記錄的數據,假設我們已有一個 ID 為 todo-identifiant-aleatoire 的在集合 todos 上的記錄,那么我們可以通過在該記錄的引用調用 get 方法獲取這個待辦事項的數據:

db.collection('todos').doc('todo-identifiant-aleatoire').get({
  success: function(res) {
    // res.data 包含該記錄的數據
    console.log(res.data)
  }
})

  也可以用 Promise 風格調用:

db.collection('todos').doc('todo-identifiant-aleatoire').get().then(res => {
  // res.data 包含該記錄的數據
  console.log(res.data)
})

  

獲取多個記錄的數據

我們也可以一次性獲取多條記錄。通過調用集合上的 where 方法可以指定查詢條件,再調用 get 方法即可只返回滿足指定查詢條件的記錄,比如獲取用戶的所有未完成的待辦事項:

db.collection('todos').where({
  _openid: 'user-open-id',
  done: false
})
.get({
  success: function(res) {
    // res.data 是包含以上定義的兩條記錄的數組
    console.log(res.data)
  }
})

  

刪除數據

在這章節我們一起看看如何使用數據庫 API 完成數據刪除,在本節中我們還是沿用讀取數據章節中使用的數據。

刪除一條記錄

對記錄使用 remove 方法可以刪除該條記錄,比如:

db.collection('todos').doc('todo-identifiant-aleatoire').remove({
  success: function(res) {
    console.log(res.data)
  }
})

  

局部更新

使用 update 方法可以局部更新一個記錄或一個集合中的記錄,局部更新意味着只有指定的字段會得到更新,其他字段不受影響。

比如我們可以用以下代碼將一個待辦事項置為已完成:

db.collection('todos').doc('todo-identifiant-aleatoire').update({
  // data 傳入需要局部更新的數據
  data: {
    // 表示將 done 字段置為 true
    done: true
  },
  success: function(res) {
    console.log(res.data)
  }
})

  


免責聲明!

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



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