您好,登錄后才能下訂單哦!
本篇文章為大家展示了使用node.js如何實現操作MySQL數據庫,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
基本使用
node.js上,最受歡迎的mysql包就是mysql模塊。
npm install mysql
然后在js腳本里面直接引用進來
var mysql = require('mysql');
配置mysql的數據庫連接。
var connection = mysql.createConnection({ host : 'ip', user : '用戶名', password : '密碼', database : 'dbname' }); connection.connect();
這樣就拿到了一個連接。
然后就可以愉快的進行各種curd操作了。
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); });
連接池操作
在單機軟件中,我們之間使用簡單獲得一個連接,然后就行了。
但是在面向互聯網的web服務里面,頻繁的創建和關閉連接,是很消耗服務器性能的。
于是我們的前輩們發明了各種池子。比如多線程操作中的線程池,游戲開發中的對象池,當然還包括數據庫操作的連接池。
創建連接池:
var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 連接池數量, host : 'ip地址', user : '賬號', password : '密碼', database : '數據庫名稱' });
然后就是和上文一樣的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; }); });
如果你的程序要退出,請把調用連接池的end()方法。不然程序會卡在后臺,一直退出失敗。
封裝成Promise
在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操作等。有興趣的話,可以去研究,因為我目前用不到這種功能,所有就不往后去深究了。
上述內容就是使用node.js如何實現操作MySQL數據庫,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。