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