node.js如何操作MySQL數(shù)據(jù)庫(kù)
MySQL數(shù)據(jù)庫(kù)作為最流行的開源數(shù)據(jù)庫(kù)?;旧鲜敲總€(gè)web開發(fā)者必須要掌握的數(shù)據(jù)庫(kù)程序之一了。
基本使用
node.js上,最受歡迎的mysql包就是mysql模塊。
npm install mysql
然后在js腳本里面直接引用進(jìn)來
var mysql = require('mysql');
配置mysql的數(shù)據(jù)庫(kù)連接。
var connection = mysql.createConnection({ host : 'ip', user : '用戶名', password : '密碼', database : 'dbname' }); connection.connect();
這樣就拿到了一個(gè)連接。
然后就可以愉快的進(jìn)行各種curd操作了。
node.js對(duì)數(shù)據(jù)庫(kù)的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ù)庫(kù)操作的連接池。
創(chuàng)建連接池:
var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 連接池?cái)?shù)量, host : 'ip地址', user : '賬號(hào)', password : '密碼', database : '數(shù)據(jù)庫(kù)名稱' });
然后就是和上文一樣的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一樣的語(yǔ)法去調(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ù)庫(kù)的詳細(xì)內(nèi)容,更多關(guān)于node.js 操作數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- node.js 開發(fā)指南 – Node.js 連接 MySQL 并進(jìn)行數(shù)據(jù)庫(kù)操作
- Node.js數(shù)據(jù)庫(kù)操作之查詢MySQL數(shù)據(jù)庫(kù)(二)
- Node.js下向MySQL數(shù)據(jù)庫(kù)插入批量數(shù)據(jù)的方法
- Node.js操作mysql數(shù)據(jù)庫(kù)增刪改查
- Node.js數(shù)據(jù)庫(kù)操作之連接MySQL數(shù)據(jù)庫(kù)(一)
- node.js平臺(tái)下的mysql數(shù)據(jù)庫(kù)配置及連接
- 從零學(xué)習(xí)node.js之mysql數(shù)據(jù)庫(kù)的操作(五)
- Linux下為Node.js程序配置MySQL或Oracle數(shù)據(jù)庫(kù)的方法
- Node.js實(shí)現(xiàn)連接mysql數(shù)據(jù)庫(kù)功能示例
- Node.js對(duì)MySQL數(shù)據(jù)庫(kù)的增刪改查實(shí)戰(zhàn)記錄
- Node.js實(shí)現(xiàn)http請(qǐng)求服務(wù)與Mysql數(shù)據(jù)庫(kù)操作方法詳解
- node.js對(duì)于數(shù)據(jù)庫(kù)MySQL基本操作實(shí)例總結(jié)【增刪改查】
相關(guān)文章
nodejs實(shí)現(xiàn)一個(gè)自己的腳手架工具
本文介紹了如何以Node.js為基礎(chǔ),自行開發(fā)一個(gè)腳手架工具,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09詳解NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署
這篇文章主要介紹了NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09Node.js從字符串生成文件流的實(shí)現(xiàn)方法
這篇文章主要介紹了Node.js從字符串生成文件流的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Node.js數(shù)據(jù)流Stream之Readable流和Writable流用法
這篇文章介紹了Node.js數(shù)據(jù)流Stream之Readable流和Writable流的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析
這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(2):nodejs服務(wù)器的構(gòu)成分析,本文是對(duì)第一節(jié)中簡(jiǎn)單服務(wù)器的代碼進(jìn)行分析總結(jié),需要的朋友可以參考下2014-12-12NodeJs內(nèi)存占用過高的排查實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于NodeJs內(nèi)存占用過高的排查實(shí)戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Node.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