記一次微信小程式雲函數操作Mysql資料庫

2020-10-29 11:01:05

一、前因

在製作課程設計的時候需簡單地操作Mysql資料庫使得小程式可以與其他端系統進行資料互動
這時候問題來了,僅僅只是因為一個插入表的資料庫操作就單獨製作一個Servlet看似又有點浪費伺服器資源
這時候就想了下,為什麼不能直接用微信小程式直接進行資料庫互動操作呢?
然後查了下檔案和百度,發現了雲函數這強大的東西

雲函數是一段執行在雲端的程式碼,無需管理伺服器,在開發工具內編寫、一鍵上傳部署即可執行後端程式碼。
小程式內提供了專門用於雲函數呼叫的 API。開發者可以在雲函數內使用 wx-server-sdk 提供的 getWXContext 方法獲取到每次呼叫的上下文(appid、openid 等),無需維護複雜的鑑權機制,即可獲取天然可信任的使用者登入態(openid)。

好傢伙,開整

二、探Node

不要看到js就以為是前端語言
node.js是執行於伺服器端的JavaScript直譯器

所以,node.js是後端語言(跑題了)
微信雲函數用的語言就是node.js
所以你要先安裝node.js
去官網下載一個吧

安裝過程是傻瓜式操作,全部下一步,中間有個勾勾問你是否自動幫你設定環境變數的把他勾上就好了
然後就去開通雲函數
在你開通微信雲服務的時候就會免費送你一定額度的資料庫、雲函數、雲儲存空間
在這裡插入圖片描述

三、雲之基

在此之前需要先開通一個雲開發,因為我已經開通了,所以就沒有截圖可以保留了
傻瓜式操作,不需要留筆記

建立工程->使用雲環境
得到以下工程目錄
在這裡插入圖片描述
然後就建立新的雲函數
在這裡插入圖片描述
輸入雲函數的名字後就能得到這個新的雲函數列表
在這裡插入圖片描述
現在還不著急,先把mysql的包安裝下來
在這裡插入圖片描述
執行命令

npm install mysql2

在這裡插入圖片描述
安裝完後的列表是這樣的
在這裡插入圖片描述
接下來就是寫程式碼環節

四、源之碼

開啟index.js

// 雲函數入口檔案
const cloud = require('wx-server-sdk')
//引入mysql操作模組
const mysql = require('mysql2/promise')
cloud.init()
// 雲函數入口函數
exports.main = async(event, context) => {
  const wxContext = cloud.getWXContext()
  try {
    const connection =await mysql.createConnection({
      host: "192.168.1.1",
      database: "database",
      user: "root",
      password: '123456',
    })
    var data="\'"+event.date+"\',";
    data+="\'"+event.random+"\',";
    data+="\'"+event.openid+"\',";
    data+="\'"+event.username+"\',";
    data+="\'"+event.icon+"\',";
    data+="\'"+event.status+"\'";
    var sql='INSERT INTO `login_log` VALUES ('+data+')';
    const [rows, fields] = await connection.execute(sql);
    console.log(rows);
  } catch (err) {
    console.log("連結錯誤", err)
    return err
  }
}

五、末言

其實用雲函數已經違背了剛開始想要不浪費資源的初衷了,雲函數按照本質來講就是伺服器資源,但是不用再寫一個servlet部署上去就很棒,管他呢嘿嘿