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 相关文章推荐
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
用jquery实现等比例缩放图片效果插件
Jul 24 Javascript
js有关元素内容操作小结
Dec 20 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
jQuery蓝色风格滑动导航栏代码分享
Aug 19 Javascript
简单谈谈JavaScript的同步与异步
Dec 31 Javascript
js接收并转化Java中的数组对象的方法
Aug 11 Javascript
浅谈jQuery效果函数
Sep 16 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 Javascript
Vue 无限滚动加载指令实现方法
May 28 Javascript
在微信小程序中使用mqtt服务的方法
Dec 13 Javascript
JavaScript实现英语单词题库
Dec 24 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
php不用正则采集速度探究总结
2008/03/24 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
动态调用CSS文件的JS代码
2010/07/29 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
2014/03/20 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
pyqt5自定义信号实例解析
2018/01/31 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
Python如何实现的二分查找算法
2020/05/27 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
应届生骨科医生求职信
2013/10/31 职场文书
农林环境专业求职信
2014/03/13 职场文书
物理学专业求职信
2014/07/04 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
小学副班长竞选稿
2015/11/21 职场文书
小学英语听课心得体会
2016/01/14 职场文书
python基础之模块的导入
2021/10/24 Python