1. 程式人生 > >小程式雲開發--雲函式操作資料庫

小程式雲開發--雲函式操作資料庫

之前學習小程式雲開發的時候,發現關於雲函式操作資料庫的內容在網上非常的少。

想了想,不如自己出個教程。

小程式雲函式執行的環境是Node.js 8.9 , Node.js 是執行在服務端的 JavaScript,如果你熟悉Javascript,那麼你將會很容易的學會Node.js。

我們分為增改查3個部分來介紹。


 

1.準備

 

我們在雲控制檯建立個數據集合

確保自己是處在雲開發環境下,本地雲函式路徑和雲端一致,

右鍵選中自己的環境,完成雲函式的同步與更新

 

2.雲函式操作資料庫--增

 服務端寫法:

funcadd 雲函式寫法

// 雲函式入口檔案
const cloud = require('wx-server-sdk')

cloud.init()
const db = cloud.database()
// 雲函式入口函式
exports.main = async (event, context) => {
  var filedvalue1 = event.data1
  var filedvalue2 = event.data2
  try {
    return await db.collection('mydata').add({
      data:{
        filed1:filedvalue1,
        filed2:filedvalue2
      }
    })
  } catch (e) {
    console.log(e)
  }
}

  

本地呼叫寫法(確保在呼叫雲函式之前在js 檔案首部引入

const db = wx.cloud.database()      ):
wx.cloud.callFunction({
      name:'funcadd',
      data:{
        data1:'kindear',
        data2:'真帥'
      },success:function(res){
        console.log(res)
      },fail:function(res){
        console.log(res)
      }
    })

  

呼叫成功返回結果:

result._id 是這個記錄的唯一標識碼,可以設定一個變數記錄下來,用作之後的更新刪除等操作。

我們檢視資料集合

 

 這個資料已經被成功記錄。

 

 

 

 3.雲函式操作資料庫--改

 funcupdate 雲函式寫法

// 雲函式入口檔案
const cloud = require('wx-server-sdk')

cloud.init()
const db = cloud.database()
// 雲函式入口函式
exports.main = async (event, context) => {
  var docid = event.docid
  var vdata1 = event.data1
  var vdata2 = event.data2
  try {
    return await db.collection('mydata').doc(docid).update({
      data: {
        filed1:vdata1,
        filed2:vdata2
      }
    })
  } catch (e) {
    console.log(e)
  }
}

  

本地呼叫寫法

 wx.cloud.callFunction({
      name:'funcupdate',
      data:{
        docid:'W-eiILdokuiPGKeC',
        data1:'chd',
        data2:'cool'
      },success:function(res){
        console.log(res)
      },fail:function(res){
        console.log(res)
      }
    })

  

呼叫成功控制檯結果:

 

 

 4.雲函式操作資料庫--查

集合的查詢操作,用雲函式能比直接在本地呼叫查詢到更多條的記錄,只需要你知道查詢的欄位名和對應的值就可以,

 funcquery 雲函式,這個是根據 id查詢的,同樣也可以根據vdata1,vdata2 等資訊來進行查詢操作

// 雲函式入口檔案
const cloud = require('wx-server-sdk')

cloud.init()
const db = cloud.database()
// 雲函式入口函式
exports.main = async (event, context) => {
  var docid = event.docid
  var vdata1 = event.data1
  var vdata2 = event.data2
  try{
    return await db.collection('mydata').where({
      _id: docid
    }).get()
  }catch(e){
    console.log(e)
  }
}

  

小程式呼叫:

 wx.cloud.callFunction({
      name:'funcquery',
      data:{
        docid:'W-eiILdokuiPGKeC',
        data1:'chd',
        data2:'cool'
      },success:function(res){
        console.log(res)
      },fail:function(res){
        console.log(res)
      }
    })

  

控制檯資訊列印