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 相关文章推荐
JSON 和 JavaScript eval使用说明
Jun 13 Javascript
JS按字节截取字符长度实例
Nov 20 Javascript
Jquery实现自定义窗口随意的拖拽
Mar 12 Javascript
jquery的ajax异步请求接收返回json数据实例
Jun 16 Javascript
jQuery插件制作之全局函数用法实例
Jun 01 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
May 16 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
Aug 24 Javascript
Vue常见面试题整理【值得收藏】
Sep 20 Javascript
JavaScript实现模态对话框实例
Jan 13 Javascript
JavaScript类的继承多种实现方法
May 30 Javascript
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
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中使用Oracle数据库(3)
2006/10/09 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
php生成shtml类用法实例
2014/12/09 PHP
php数组分页实现方法
2016/04/30 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
如何搜索查找并解决Django相关的问题
2014/06/30 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
python WindowsError的错误代码详解
2017/07/23 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
PHP中如何使用Cookie
2015/10/28 面试题
进程的查看和调度分别使用什么命令
2013/12/14 面试题
幼儿园保育员辞职信
2014/01/12 职场文书
大学生作弊检讨书
2014/02/19 职场文书
旅行社计调工作总结
2015/08/12 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
mysql联合索引的使用规则
2021/06/23 MySQL
java泛型通配符详解
2021/07/25 Java/Android