最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

MySQL數(shù)據(jù)庫作為最流行的開源數(shù)據(jù)庫?;旧鲜敲總€(gè)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();

這樣就拿到了一個(gè)連接。

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

node.js對(duì)數(shù)據(jù)庫的curd都在query這個(gè)方法里面。這點(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ī)軟件中,我們之間使用簡(jiǎn)單獲得一個(gè)連接,然后就行了。

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

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

創(chuàng)建連接池:

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

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

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

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

封裝成Promise

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

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

query = function (sql, arr, callback) {
  console.log('獲取一個(gè)連接');
  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ǎn)單的用法到這里就結(jié)束了。當(dāng)然還有更高級(jí)的用法,比如MySQL的Cluster操作等。有興趣的話,可以去研究,因?yàn)槲夷壳坝貌坏竭@種功能,所有就不往后去深究了。

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

相關(guān)文章

  • node.js中的fs.chmodSync方法使用說明

    node.js中的fs.chmodSync方法使用說明

    這篇文章主要介紹了node.js中的fs.chmodSync方法使用說明,本文介紹了fs.chmodSync方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • npm的lock機(jī)制解析

    npm的lock機(jī)制解析

    這篇文章主要介紹了npm的lock機(jī)制解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • 解決node-sass偶爾安裝失敗的方法小結(jié)

    解決node-sass偶爾安裝失敗的方法小結(jié)

    這篇文章主要介紹了解決node-sass偶爾安裝失敗的方法小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • nodejs 十六進(jìn)制字符串型數(shù)據(jù)與btye型數(shù)據(jù)相互轉(zhuǎn)換

    nodejs 十六進(jìn)制字符串型數(shù)據(jù)與btye型數(shù)據(jù)相互轉(zhuǎn)換

    這篇文章主要介紹了nodejs 十六進(jìn)制字符串型數(shù)據(jù)與btye型數(shù)據(jù)相互轉(zhuǎn)換,需要的朋友可以參考下
    2018-07-07
  • NodeJS 文件夾拷貝以及刪除功能

    NodeJS 文件夾拷貝以及刪除功能

    這篇文章主要介紹了NodeJS 文件夾拷貝以及刪除功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • npm與nrm兩種方式查看源和切換鏡像詳解

    npm與nrm兩種方式查看源和切換鏡像詳解

    nrm(npm registry manager )是npm的鏡像源管理工具,它可以快速在讓你在本地源之間切換,下面這篇文章主要給大家介紹了關(guān)于npm與nrm兩種方式查看源和切換鏡像的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 詳解nodejs微信公眾號(hào)開發(fā)——6.自定義菜單

    詳解nodejs微信公眾號(hào)開發(fā)——6.自定義菜單

    這篇文章主要介紹了詳解nodejs微信公眾號(hào)開發(fā)——6.自定義菜單,自定義菜單能夠幫助公眾號(hào)豐富界面,讓用戶更好更快地理解公眾號(hào)的功能。
    2017-04-04
  • Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫功能完整示例

    Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫功能完整示例

    這篇文章主要介紹了Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫功能,結(jié)合完整實(shí)例形式分析了nodejs針對(duì)MongoDB數(shù)據(jù)庫的連接及增刪改查基本操作技巧,需要的朋友可以參考下
    2019-02-02
  • Node.js文件操作方法匯總

    Node.js文件操作方法匯總

    本文給大家匯總了node.js實(shí)現(xiàn)文件操作的方法,非常的細(xì)致全面,希望大家能夠喜歡
    2016-03-03
  • express中間件加載機(jī)制示例詳解

    express中間件加載機(jī)制示例詳解

    中間件是一種方法,可以接收客戶端發(fā)來的請(qǐng)求,可以對(duì)請(qǐng)求做出響應(yīng),也可以將請(qǐng)求繼續(xù)交給下一個(gè)中間件繼續(xù)處理,下面這篇文章主要給大家介紹了關(guān)于express中間件加載機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

古蔺县| 洛宁县| 德昌县| 南丰县| 繁昌县| 茌平县| 大竹县| 西乌珠穆沁旗| 眉山市| 商河县| 全南县| 都昌县| 会东县| 霍邱县| 昭苏县| 奉贤区| 都兰县| 南昌市| 子洲县| 方城县| 馆陶县| 伊川县| 冷水江市| 泰顺县| 赤水市| 英吉沙县| 米脂县| 九寨沟县| 清原| 饶阳县| 通化市| 绥棱县| 尤溪县| 安仁县| 闻喜县| 霍林郭勒市| 百色市| 甘洛县| 马鞍山市| 肥西县| 宁强县|