溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用node.js如何實現(xiàn)操作MySQL數(shù)據(jù)庫

發(fā)布時間:2020-10-30 14:43:43 來源:億速云 閱讀:125 作者:Leah 欄目:開發(fā)技術

本篇文章為大家展示了使用node.js如何實現(xiàn)操作MySQL數(shù)據(jù)庫,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

基本使用

node.js上,最受歡迎的mysql包就是mysql模塊。

npm install mysql

然后在js腳本里面直接引用進來

var mysql   = require('mysql');

配置mysql的數(shù)據(jù)庫連接。

var connection = mysql.createConnection({
 host   : 'ip',
 user   : '用戶名',
 password : '密碼',
 database : 'dbname'
});
connection.connect();

這樣就拿到了一個連接。

然后就可以愉快的進行各種curd操作了。

node.js對數(shù)據(jù)庫的curd都在query這個方法里面。這點和ado.net有很大的區(qū)別。

你的所有的操作,都從query的回調函數(shù)里面獲得結果

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
 if (error) throw error;
 console.log('The solution is: ', results[0].solution);
});

連接池操作

在單機軟件中,我們之間使用簡單獲得一個連接,然后就行了。

但是在面向互聯(lián)網的web服務里面,頻繁的創(chuàng)建和關閉連接,是很消耗服務器性能的。

于是我們的前輩們發(fā)明了各種池子。比如多線程操作中的線程池,游戲開發(fā)中的對象池,當然還包括數(shù)據(jù)庫操作的連接池。

創(chuàng)建連接池:

var mysql = require('mysql');
var pool = mysql.createPool({
 connectionLimit : 連接池數(shù)量,
 host      : 'ip地址',
 user      : '賬號',
 password    : '密碼',
 database    : '數(shù)據(jù)庫名稱'
});

然后就是和上文一樣的curd操作

//從連接池中獲取一個連接
pool.getConnection(function(err, connection) {
  if (err) throw err; // not connected!
 
  // 使用這個連接curd
  connection.query('SELECT something FROM sometable', function (error, results, fields) {
    // 使用完之后,記得把這個連接放到連接池里面去
    connection.release();
 
    // Handle error after the release.
    if (error) throw error;
 
  });
});

如果你的程序要退出,請把調用連接池的end()方法。不然程序會卡在后臺,一直退出失敗。

封裝成Promise

在ES6中,可以直接用和C#的await一樣的語法去調用js的異步函數(shù)。

但是要求這個函數(shù)必須是async聲明和返回值是Promise對象。

query = function (sql, arr, callback) {
  console.log('獲取一個連接');
  return new Promise(function (resolve, reject) {
    pool.getConnection(function (err, connection) {
      if (err) {
        reject(err);// not connected!
      } else {
        console.log('開始查詢');
        connection.query(sql, arr, function (error, results, fields) {
          connection.release();
          console.log('連接已經釋放,返回結果');

          if (error) reject(error);
          // callback && callback(results, fields)
          resolve({
            rows: results,
            fields: fields
          })
        });
      }


    });
  })


}

簡單的用法到這里就結束了。當然還有更高級的用法,比如MySQL的Cluster操作等。有興趣的話,可以去研究,因為我目前用不到這種功能,所有就不往后去深究了。

上述內容就是使用node.js如何實現(xiàn)操作MySQL數(shù)據(jù)庫,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI