微信小程序通过 node 连接 mysql——方法,简要原理,及一些常见问题
前言
博主自己在22年夏天根據課程要求做了一個小程序連接阿里云服務器的案例,在最近又碰到了相應的需求。
原參考文章:微信小程序 Node連接本地MYSQL_微信小程序nodejs連接數據庫_JJJenny0607的博客-CSDN博客 ,還請多多支持原作者!
第二次嘗試的時候已經熟練許多了,但是還是遇到了很多挺煩人的問題,也浪費了很多時間排查 bug。因此博主打算趁著剛做過記憶還深刻的時候,把全過程、博主自己的理解和遇到的一些問題的解決方法整理出來。當然我也不可能能解決所有問題,遇到的部分問題也只是針對我自己的情況可以解決。因此如果 solutions 不起效或遇到其他問題,可以在評論區留言,我會與大家溝通(不保證能否解決~)。
原理
nodejs 作為中介服務器,可以讓小程序連接 mysql 數據庫。
步驟
如果不出錯誤的話, 基本流程就是跟著上面的文章來的。
下載 node。可以在 cmd 中輸入 node -v 查看有無成功下載。
新建一個數據庫,這一部分很簡單,有 mysql 相關基礎的讀者應該沒問題,也可以看博主的 mysql 專欄學習。
新建一個小程序,在結構中新建 server 文件夾用于存儲 node 本地服務器相關代碼。
右鍵 server 文件夾,點擊“在內建終端中打開”,安裝一些所需的包。
我們的 nodejs 是部署在本地的,就在 server 文件夾里。node_modules 是下載的 nodejs 包,server.js 是我們的操作 nodejs 的代碼。
我們在需要調用數據庫的頁面里先調用本地服務器,比如在 mysqlTest.js 中,onLoad 里:
onLoad() {//我們寫一個調用數據庫函數,使得本頁面加載時調用此函數,查找 youqi.data 里的所有條目。wx.request({method: 'GET',//這里要和 server.js 定義的 post or get 一致!!!url: 'http://[本地 IPV4 地址]:3000/getUser',//這里的 ip 地址不是數據庫的地址,而是你的電腦本地的地址,因為這一步的操作是要找到本地 nodejs 服務器。getUser 要和 server.js 中定義的方法名一致。data: {//這里面是傳入參數。比如我們要 select * from data where openid= 給定的 openid,就可以從這里傳入},success: function (res) {//成功獲取到值,返回一個 res 對象。如果不知道 res 對象里面包含什么,可以先輸出 res 對象看一下其中都包含什么console.log(res);},fail: function () {//沒有獲取到值,說明這中間出問題了。console.log("獲取失敗");}})},本地 IPV4 地址是怎么查出來的?打開 cmd,輸入 ipconfig。無線局域網適配器 WLAN 里的 IPV4 即是。
nodejs 接收到了請求,就會執行 server.js 里對應的方法。
如何運行
首先 nodejs 服務器需要手動開啟,我還不會自動開啟。
右鍵 server 文件夾,在內建終端中打開,然后在終端中輸入:
下面那句話說明正常啟動服務器并且開始監聽。
我們輸出一下 res,看看成功會返回什么信息。調試器里的 console 輸出:
data 里是我們數據庫的查詢結果。
res.data 獲取這個15長度的 Array。
然后比如我們要獲取其中的 time 值,就是 res.data[0].time, res.data[1].time… res.dat[14].time。
{} 表示其中是一個對象變量,通過句號+索引名稱獲取特定的值。
而剛才的一直在監聽的內建終端里輸出:
這個的輸出對應 function(error,results,fields) 里的 console.log(results)。如果查詢失敗,error 也是在這個內建終端里輸出。
常見問題
數據庫無法連接?
建好數據庫后,最好就先用 cmd 或 workbench 連接一下試試。如果能成功連接并查詢,之后出問題也可以排除 mysql 的一部分問題。
如果采用云服務器(如阿里云)連接不上,可能的問題有:
- 服務器端口 80 和 3306 沒開。(不建議一鍵全部放行,有被hacker get 的風險)
- mysql 需要有一個用戶能在所有 ip 地址里對該數據庫進行讀寫操作,這里可以參考 DCL 的內容來新建符合要求的 user。Mysql_9 SQL 語句——DCL_sql語言dcl_灰海寬松的博客-CSDN博客
- 服務器防火墻的問題,要開啟3306端口。
?
小程序報錯 ERR TIMEOUT
打開網站可以看到 404 顯示。
-
首先先確保前面那個問題確實解決了,該數據庫確實可以從本地連接,,不是數據庫的問題。
-
再確認 get post 方法是否對應,方法名是否寫錯。很多時候輸入了錯誤的鏈接也會顯示 404.
-
小程序不校驗合法域名是否打開。
-
啟用或關閉 windows 功能——Internet Information Services,及其可承載 web 核心,子項全部打開。點擊確定。如果成功啟動,在瀏覽器中輸入 127.0.0.1,應該可以看到:
-
檢查方法名,get post 類別是否寫錯。
總結
以上是生活随笔為你收集整理的微信小程序通过 node 连接 mysql——方法,简要原理,及一些常见问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决一款防止系统和负载出现过大电流 可提
- 下一篇: matlab绘制脑电地形图,脑电地形图的