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一樣的語法去調(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 十六進(jìn)制字符串型數(shù)據(jù)與btye型數(shù)據(jù)相互轉(zhuǎn)換
這篇文章主要介紹了nodejs 十六進(jìn)制字符串型數(shù)據(jù)與btye型數(shù)據(jù)相互轉(zhuǎn)換,需要的朋友可以參考下2018-07-07
詳解nodejs微信公眾號(hào)開發(fā)——6.自定義菜單
這篇文章主要介紹了詳解nodejs微信公眾號(hào)開發(fā)——6.自定義菜單,自定義菜單能夠幫助公眾號(hào)豐富界面,讓用戶更好更快地理解公眾號(hào)的功能。2017-04-04
Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫(kù)功能完整示例
這篇文章主要介紹了Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫(kù)功能,結(jié)合完整實(shí)例形式分析了nodejs針對(duì)MongoDB數(shù)據(jù)庫(kù)的連接及增刪改查基本操作技巧,需要的朋友可以參考下2019-02-02

