首頁  >  文章  >  web前端  >  nodejs如何安裝mysql包

nodejs如何安裝mysql包

青灯夜游
青灯夜游原創
2021-09-16 11:38:035410瀏覽

nodejs中可以利用npm工具來安裝mysql包,具體安裝方法:1、開啟終端,進入指定專案目錄;2、執行「npm install mysql --save」指令,等待下載並安裝完成即可。

nodejs如何安裝mysql包

本教學操作環境:windows7系統、nodejs 14.15.4版,DELL G3電腦。

nodejs安裝mysql套件、連接MySQL的方法

#首先要安裝nodejs和npm。

寫了一個簡單的小例子,整個小例子使用了express框架,node_modules裡面已經下載好了express和ejs模板。先來看看目錄:

nodejs如何安裝mysql包

server.js   =》  node.js的伺服器啟動檔案

db.js   =》  資料庫操作檔

views  =》  存放範本文件,也就是所有的頁面存放的地方

public =》  存放所有靜態資源的地方,例如css js images之類的

#連接MySQL的方法:

第一步,需要安裝一個叫做MySQL的npm包,這個包是官方提供的,穩定性是可以保證的,當然,還有其他的npm包,這裡我們只使用mysql包。安裝的方法很簡單了,輸入指令npm install mysql --save,等待下載完成.

##看到這個樣子,那就是安裝成功了。

然後我們打開db.js文件,在裡面寫入資料庫中操作必須的一些程式碼,看下圖:

##程式碼很少,意思也很明顯,第一步需要引入以mysql包,然後我們創建一個空對象,並且給他賦值一個叫query的方法,這個方法接受兩個參數,第一個參數是你查詢數據時候的sql語句,第二個參數是取得查詢結果的回呼函數。

再看函數內部,第一塊程式碼是用來設定操作mysql的配置的:

#host表示mysql安裝的位址,因為我是本地的資料庫,所以直接使用localhost

    user表示mysql的用戶名
  • ##password表示mysql的密碼
  • database表示你要選擇操作的具體的函式庫的名字
  • port表示端口,可不填,預設就是3306
  • mysql.createConnection的回傳值connection是我們接下來操作mysql的一個具體的對象,所有的操作方法都是基於他的。

呼叫connection的connect方法判斷連線是否成功,如果失敗,則把錯誤訊息印出來,並且停止運作。

呼叫connection的query方法來直接向資料庫傳送sql語句,並且把用回呼函數傳回結果,其中回呼函數中有三個參數,第一參數是錯誤對象,如果操作失敗,則會停止並列印錯誤訊息,第二參數是具體的返回的結果,正常情況下是一個數組,裡麵包含很多json,第三個參數也是一個數組,裡面包含著最每個資料的解釋,例如目前資料屬於哪個函式庫,那張表等等。我們使用最多的自然是第二個參數了

 

# 當資料庫作業結束以後關閉連線

 

整個過程很簡單,只是其中有兩個問題,第一個是資料庫連線遺失的問題,不知道有沒有人碰到過,第一次造訪首頁的時候,連接資料庫正常,第二次訪問首頁,資料庫連線不上了,會報錯說連線遺失。這個原因是我們每操作完一次資料庫就關閉了資料庫連接,再次訪問的時候就找不到連接了,但是連接又不能不關閉,有人可能覺得奇怪,每次訪問首頁時候都會訪問db.js文件,不是每次都會有新連接產生嗎?是的,只是我最開始的時候產生連接的那段程式碼並沒有放到db.query的函數中,而是放在外面,如下圖:

這樣就導致連線只產生一次,關閉了以後,第二採訪就無法連線。把它放在函數裡面以後,使用exports對外暴露介面。每次造訪首頁,都會重新走一遍創建連接的過程,每次都能拿到一個新的連接,這樣訪問就沒有問題了。其實專案中可以直接使用連接池。省去了很多麻煩。

第二個問題是我們在server.js中引入了db.js

此時大家可能看到了,mysql.query有兩個參數,第一個是sql,第二個是回呼函數,回呼函數有一個result的參數,其實他就是資料庫查詢出來的結果。有人會說為什麼不直接在db.js中使用return,把查詢結果回傳,搞什麼回呼!

其實這裡就是node.js的非同步造成的一些問題了,如果我們把server.js中的程式碼改成下圖

因為我們看到了mysql套件的query方法是非同步操作,這就導致下面的res.render()方法不會等待他把結果查詢出來以後再執行,往往是結果還沒出來,就已經開始渲染頁面,但是資料又沒有得到,所以就會報錯了。因此只好傳送了一個回呼函數進去,在mysql的query方法結束以後,把結果透過參數傳入到我們自己寫的回呼函數中,這樣我們就能在回調函數裡得到結果了。然後再執行渲染。當然處理這個問題還可以引入第三方包 async來解決非同步問題,具體看個人了。

【相關推薦:《windows環境下怎麼安裝nodejs? 》】

以上是nodejs如何安裝mysql包的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn