您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页node.js如何操作MySQL数据库

node.js如何操作MySQL数据库

来源:华佗小知识
node.js如何操作MySQL数据库

MySQL数据库作为最流⾏的开源数据库。基本上是每个web开发者必须要掌握的数据库程序之⼀了。基本使⽤

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数据库的详细内容,更多关于node.js 操作数据库的资料请关注其它相关⽂章!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务