MySQL數據庫做爲最流行的開源數據庫。基本上是每一個web開發者必需要掌握的數據庫程序之一了。node
node.js上,最受歡迎的mysql包就是mysql模塊。mysql
npm install mysql
而後在js腳本里面直接引用進來web
var mysql = require('mysql');
配置mysql的數據庫鏈接。sql
var connection = mysql.createConnection({ host : 'ip', user : '用戶名', password : '密碼', database : 'dbname' });
connection
這樣就拿到了一個鏈接。數據庫
而後就能夠愉快的進行各類curd操做了。npm
node.js對數據庫的curd都在query這個方法裏面。這點和ado.net有很大的區別。服務器
你的全部的操做,都從query的回調函數裏面得到結果多線程
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); });
在單機軟件中,咱們之間使用簡單得到一個鏈接,而後就好了。curl
可是在面向互聯網的web服務裏面,頻繁的建立和關閉鏈接,是很消耗服務器性能的。異步
因而咱們的前輩們發明了各類池子。好比多線程操做中的線程池,遊戲開發中的對象池,固然還包括數據庫操做的鏈接池。
建立鏈接池:
var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 鏈接池數量, host : 'ip地址', user : '帳號', password : '密碼', database : '數據庫名稱' });
而後就是和上文同樣的curd操做
若是你的程序要退出,請把調用鏈接池的end()方法。否則程序會卡在後臺,一直退出失敗。
在ES6中,能夠直接用和C#的await同樣的語法去調用js的異步函數。
可是要求這個函數必須是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操做等。有興趣的話,能夠去研究,由於我目前用不到這種功能,全部就不日後去深究了。
有須要交流的歡迎你們加入QQ羣:545594312