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 相关文章推荐
防止浏览器记住用户名及密码的简单实用方法
Apr 22 Javascript
Javascript实现简单二级下拉菜单实例
Jun 15 Javascript
jQuery中outerWidth()方法用法实例
Jan 19 Javascript
javascript实现画不相交的圆
Apr 07 Javascript
JavaScript 常见安全漏洞和自动化检测技术
Aug 21 Javascript
JavaScript html5 canvas绘制时钟效果
Mar 01 Javascript
JavaScript的React框架中的JSX语法学习入门教程
Mar 05 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
使用Angular CLI进行Build(构建)和Serve详解
Mar 24 Javascript
angular中的post请求处理示例详解
Jun 30 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
Aug 31 Javascript
vue脚手架项目创建步骤详解
Mar 02 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
图解上海144收音机
2021/03/02 无线电
用PHP将数据导入到Foxmail
2006/10/09 PHP
Laravel框架表单验证详解
2014/09/04 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
python异步Web框架sanic的实现
2020/04/27 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
社会学专业求职信
2014/02/24 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
初中作文评语集锦
2014/12/25 职场文书
奔腾年代观后感
2015/06/09 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书