小程序雲開發(三):雲數據庫的-增-刪-查-改

一,各類功能的api用法說明

官方api說明

二,小程序端API和服務端API的區別

服務端API用於雲函數運行環境。
Server 端的 API 與小程序端基本保持一致,有如下不同:

Server API 不再接受回調(success, fail, complete),統一返回 Promise
Server 端有批量寫和批量刪除的權限,即可在集合或查詢語句上調用 update 或 remove
Server 端獨有 API 如創建集合(db.createCollection)
數據庫 API 都是懶執行的,這意味着只有真實需要網絡請求的 API 調用纔會發起網絡請求,其餘如獲取數據庫、集合、記錄的引用、在集合上構造查詢條件等都是不會觸發網絡請求的。

例如Users.where({ _openid: openid}).get是可以在本地獲取

db.collection(‘Users’).where({ _openid: wxContext.OPENID}).update就不可以,只能在雲端來完成!

三,實踐例子,增刪查改的運用

1,記錄用戶授權時間

已有數據時更新數據,沒有數據時插入一條

/**先行判斷是否錄入過,在complete結束回調裏處理,不然未查詢完就已經開始處理了 */
  judge: function () {
    var that = this;
    let openid = app.globalData.openid;
    let id;
    const db = wx.cloud.database();
    const Users = db.collection('Users');
    Users.where({ _openid: openid}).get({
      success: function (res) {
        console.log('get-Users=' + res.data[0]._id )//因爲只有一條數據所以加[0]
        id = res.data[0]._id;
      },
      fail: function (err){
        console.error('err:', err)
      },
      complete: function (ok) { 
        console.log(id + '-----------' + util.isEmpty(id)); 
        that.dispost(id)
      },
    });  
  },

  /**處理 */
  dispost:function(id){
    const db = wx.cloud.database();
    const Users = db.collection('Users');
    if (id) {
      Users.doc(id).update({
        data: { authorization_time: util.formatTime(new Date()) },
        success: function (res) {
          console.log('update-authorization_time-success' + util.formatTime(new Date()))
        },
        fail: err => {
          console.error('update-authorization_time-err:', err)
        }
      })
    }
    else {
      Users.add({
        data: { authorization_time: util.formatTime(new Date()) },
        success: function (res) {
          console.log('add-authorization_time-success' + util.formatTime(new Date()))
        },
        fail: err => {
          console.error('add-authorization_time-err:', err)
        }
      })
    }
  },

2,新增聯繫人

const db = wx.cloud.database();
      const Users = db.collection('Contact').add({
        data: { 
          cooc_name: e.detail.value.cooc_name,
          cooc_papers_class: e.detail.value.cooc_papers_class,
          cooc_papers_no: e.detail.value.cooc_papers_no,
          cooc_sex: e.detail.value.cooc_sex,
          cooc_calss: that.data.cooc_calss,
        },
        success: function (res) {
          console.log('add-Contact-ok:' + JSON.stringify(res))
        },
        fail: err => {
          console.error('add-Contact-err:', err)
        }
      })

3,用戶註冊,修改個人信息
雲函數

// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
const _ = db.command
// 雲函數入口函數
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  try {
    return await db.collection('Users').where({
      _openid: wxContext.OPENID
    })
      .update({
        data: {
          comp_name: event.comp_name,
          comp_sex: event.comp_sex,
          comp_email: event.comp_email,
          comp_mobile: event.comp_mobile,
          comp_work_pcp: event.comp_work_pcp,
          comp_work_address: event.comp_work_address,
          comp_img: event.comp_img,
        },
      })
  } catch (e) {
    console.error(e)
  }
}

更新

//雲函
      wx.cloud.callFunction({
        name: 'updateUserInfo',
        data: {
          comp_name: e.detail.value.comp_name,
          comp_sex: e.detail.value.comp_sex,
          comp_email: e.detail.value.comp_email,
          comp_mobile: e.detail.value.comp_mobile,
          comp_work_pcp: that.data.citykey,
          comp_work_address: that.data.address,
        },
        complete: res => {
          console.log('updateUserInfo=' + JSON.stringify(res) )
        }
      })

獲取數據

let openid = app.globalData.openid;
const db = wx.cloud.database();
const Users = db.collection('Users');
Users.where({ _openid: openid }).get({
  success: function (res) {
    console.log(res)
    that.checkED(arrSex,res.data[0].comp_sex);
    that.setData({
      arrSex: arrSex,
      comp_name: res.data[0].comp_name,
      comp_sex: res.data[0].comp_sex,
      comp_email: res.data[0].comp_email,
      comp_mobile: res.data[0].comp_mobile,
      //comp_work_pcp: res.data[0].citykey,
      address: res.data[0].comp_work_address,
    })
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章