node.js如何操作MySQL數(shù)據(jù)庫
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)文章!
- node.js 開發(fā)指南 – Node.js 連接 MySQL 并進(jìn)行數(shù)據(jù)庫操作
- Node.js數(shù)據(jù)庫操作之查詢MySQL數(shù)據(jù)庫(二)
- Node.js下向MySQL數(shù)據(jù)庫插入批量數(shù)據(jù)的方法
- Node.js操作mysql數(shù)據(jù)庫增刪改查
- Node.js數(shù)據(jù)庫操作之連接MySQL數(shù)據(jù)庫(一)
- node.js平臺下的mysql數(shù)據(jù)庫配置及連接
- 從零學(xué)習(xí)node.js之mysql數(shù)據(jù)庫的操作(五)
- Linux下為Node.js程序配置MySQL或Oracle數(shù)據(jù)庫的方法
- Node.js實(shí)現(xiàn)連接mysql數(shù)據(jù)庫功能示例
- Node.js對MySQL數(shù)據(jù)庫的增刪改查實(shí)戰(zhàn)記錄
- Node.js實(shí)現(xiàn)http請求服務(wù)與Mysql數(shù)據(jù)庫操作方法詳解
- node.js對于數(shù)據(jù)庫MySQL基本操作實(shí)例總結(jié)【增刪改查】
相關(guān)文章
詳解NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署
這篇文章主要介紹了NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09Node.js從字符串生成文件流的實(shí)現(xiàn)方法
這篇文章主要介紹了Node.js從字符串生成文件流的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Node.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)成分析,本文是對第一節(jié)中簡單服務(wù)器的代碼進(jìn)行分析總結(jié),需要的朋友可以參考下2014-12-12NodeJs內(nèi)存占用過高的排查實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于NodeJs內(nèi)存占用過高的排查實(shí)戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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