欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node.js如何操作MySQL數(shù)據(jù)庫

 更新時間:2020年10月29日 14:34:04   作者:青城同學(xué)  
這篇文章主要介紹了node.js如何操作MySQL數(shù)據(jù)庫,幫助大家更好的進(jìn)行web開發(fā),感興趣的朋友可以了解下

MySQL數(shù)據(jù)庫作為最流行的開源數(shù)據(jù)庫?;旧鲜敲總€web開發(fā)者必須要掌握的數(shù)據(jù)庫程序之一了。

基本使用

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

npm install mysql

然后在js腳本里面直接引用進(jìn)來

var mysql   = require('mysql');

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

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

這樣就拿到了一個連接。

然后就可以愉快的進(jìn)行各種curd操作了。

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

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

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

連接池操作

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

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

于是我們的前輩們發(fā)明了各種池子。比如多線程操作中的線程池,游戲開發(fā)中的對象池,當(dāng)然還包括數(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;
 
  });
});

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

封裝成Promise

在ES6中,可以直接用和C#的await一樣的語法去調(diào)用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('連接已經(jīng)釋放,返回結(jié)果');

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


    });
  })


}

簡單的用法到這里就結(jié)束了。當(dāng)然還有更高級的用法,比如MySQL的Cluster操作等。有興趣的話,可以去研究,因?yàn)槲夷壳坝貌坏竭@種功能,所有就不往后去深究了。

以上就是node.js如何操作MySQL數(shù)據(jù)庫的詳細(xì)內(nèi)容,更多關(guān)于node.js 操作數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • nodejs實(shí)現(xiàn)一個自己的腳手架工具

    nodejs實(shí)現(xiàn)一個自己的腳手架工具

    本文介紹了如何以Node.js為基礎(chǔ),自行開發(fā)一個腳手架工具,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 深入解析nodejs HTTP服務(wù)

    深入解析nodejs HTTP服務(wù)

    本篇文章主要介紹了深入解析nodejs HTTP服務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 詳解NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署

    詳解NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署

    這篇文章主要介紹了NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Node.js從字符串生成文件流的實(shí)現(xiàn)方法

    Node.js從字符串生成文件流的實(shí)現(xiàn)方法

    這篇文章主要介紹了Node.js從字符串生成文件流的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Node.js數(shù)據(jù)流Stream之Readable流和Writable流用法

    Node.js數(shù)據(jù)流Stream之Readable流和Writable流用法

    這篇文章介紹了Node.js數(shù)據(jù)流Stream之Readable流和Writable流的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析

    輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析

    這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析,本文是對第一節(jié)中簡單服務(wù)器的代碼進(jìn)行分析總結(jié),需要的朋友可以參考下
    2014-12-12
  • Express系列之multer上傳的使用

    Express系列之multer上傳的使用

    本篇文章主要介紹了Express系列之multer上傳的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • NodeJs內(nèi)存占用過高的排查實(shí)戰(zhàn)記錄

    NodeJs內(nèi)存占用過高的排查實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于NodeJs內(nèi)存占用過高的排查實(shí)戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Node.js中path.resolve與path.join的區(qū)別與作用詳解

    Node.js中path.resolve與path.join的區(qū)別與作用詳解

    path.resolve和path.join都是屬于path核心模塊下的方法,用來拼接路徑,下面這篇文章主要給大家介紹了關(guān)于Node.js中path.resolve與path.join的區(qū)別與作用的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 安裝Node.js并創(chuàng)建Web程序

    安裝Node.js并創(chuàng)建Web程序

    這篇文章介紹了安裝Node.js并創(chuàng)建Web程序的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評論