node.js如何操作MySQL数据库


Posted in Javascript onOctober 29, 2020

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 操作数据库的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
jquery $.fn $.fx是什么意思有什么用
Nov 04 Javascript
javascript中mouseover、mouseout使用详解
Jul 19 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
Sep 01 Javascript
jquery+ajax实现注册实时验证实例详解
Dec 08 Javascript
JavaScript Ajax编程 应用篇
Jul 02 Javascript
H5实现中奖记录逐行滚动切换效果
Mar 13 Javascript
JavaScript实现移动端轮播效果
Jun 06 Javascript
JS实现中英文混合文字溢出友好截取功能
Aug 06 Javascript
Angularjs实现数组随机排序的方法
Oct 02 Javascript
微信小程序城市选择及搜索功能的方法
Mar 22 Javascript
JavaScript 常见的继承方式汇总
Sep 17 Javascript
OpenLayers3实现地图显示功能
Sep 25 Javascript
TypeScript魔法堂之枚举的超实用手册
Oct 29 #Javascript
解决antd的Form组件setFieldsValue的警告问题
Oct 29 #Javascript
vue 函数调用加括号与不加括号的区别
Oct 29 #Javascript
JavaScript实现随机点名小程序
Oct 29 #Javascript
在antd中setFieldsValue和defaultVal的用法
Oct 29 #Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 #Javascript
解决antd datepicker 获取时间默认少8个小时的问题
Oct 29 #Javascript
You might like
20个PHP常用类库小结
2011/09/11 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
jQuery load方法用法集锦
2011/12/06 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
Python partial函数原理及用法解析
2019/12/11 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
酒店管理求职信范文
2014/04/06 职场文书
建议书的格式
2014/05/12 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
董事长助理岗位职责
2015/02/11 职场文书
寒假安全保证书
2015/02/28 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
springboot读取nacos配置文件
2022/05/20 Java/Android