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 相关文章推荐
SyntaxHighlighter代码加色使用方法
Sep 07 Javascript
jquery ui dialog ie8出现滚动条的解决方法
Dec 06 Javascript
浏览器常用高宽的jquery插件
Feb 24 Javascript
js仿百度有啊通栏展示效果实现代码
May 28 Javascript
js 判断文件类型并控制表单提交示例代码
Nov 14 Javascript
自己实现ajax封装示例分享
Apr 01 Javascript
JavaScript实现网页加载进度条代码超简单
Sep 21 Javascript
JS 清除字符串数组中,重复元素的实现方法
May 24 Javascript
JS 数字转换为大写金额的简单实例
Aug 04 Javascript
Node.js用readline模块实现输入输出
Dec 16 Javascript
jquery ztree实现右键收藏功能
Nov 20 jQuery
详解写好JS条件语句的5条守则
Feb 28 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/04/10 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
numpy matrix和array的乘和加实例
2018/06/28 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
快速查找Python安装路径方法
2020/02/06 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
Python通过Pillow实现图片对比
2020/04/29 Python
Python库安装速度过慢解决方案
2020/07/14 Python
python redis存入字典序列化存储教程
2020/07/16 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
委托书模板
2014/04/04 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
教师节座谈会主持词
2015/07/03 职场文书
Python数据类型最全知识总结
2021/05/31 Python
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技