node环境下使用express框架连接MySQL数据库

目前,越来越多的企业选择使用前后端分离模式新建项目,这样,使得开发工作越来越便捷。那么,作为前端开发,怎样能在后端开发没有完成之前,测试并运行前端项目呢。在这里,小编推荐使用express框架搭建服务。

以MySQL数据库为例。

理所当然的得先安装nodeJs,然后使用node命令安装express。

npm install express -g

安装好express之后,再安装express工程生成依赖。

npm install express-generator -g

之后,选择好工程的目录,并在该目录下,使用express命令初始化一个express工程。

express demo

进入工程目录,使用node命令安装MySQL依赖。

npm install mysql --save-dev

接下来就要进行数据库连接操作了,你可以新建一个测试路由,在该路由里直接进行数据库连接测试。

在routes目录下新建一个名为sqlTest测试路由的js文件。键入以下代码。

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
     var connection = mysql.createConnection({
         host     : 'localhost',
  //  数据库连接地址
         port     :  '3306',
      //  数据库连接端口,默认为3306时,可省略
         user     : 'xxx',
        //  数据库用户名
         password : 'xxx',
        //  数据库密码
         database : 'test',
       //  要连接的数据库名
         charset  : 'utf8_general_ci'
   //  数据库编码

       });
       connection.connect();
       connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
         if (error) throw error;
         console.log('The solution is: ', results[0].solution);
       });

       connection.end();
)
});

module.exports = router;

修改工程的入口文件app.js,把新建的路由添加进去。

//  引入新建的路由文件
var sqlTestRouter = require('./routes/sqlTest'); 
// 映射路由访问地址
app.use('/sqlTest',sqlTestRouter);

到此,准备工作已经完成,可以启动工程,进行访问测试了。

set DEBUG= demo & npm start

工程启动之后,就可以打开浏览器,在地址栏中键入localhost:3000访问工程了,前提你没有修改工程的默认访问端口,想要修改工程默认访问端口,可在工程的bin目录下修改www.js文件。

键入访问localhost:3000/sqlTest,来测试数据库是否连接成功。如果CMD控制台输出“The solution is: 2”,则表示数据库连接成功!

当然,这还不能满足进行项目开发的条件。要满足项目开发与测试,必须要把数据库连接及操作方法封装起来,并把数据库的操作结果以JSON对象的格式进行返回。下面小编就进行简单的封装一下。

在工程目录下,新建一个名为config的目录,并在该目录下新建一个js文件名为mysql文件,作为数据库连接的配置文件。内容如下:

mysql = {
        host     : 'localhost',
  //  数据库连接地址
        port     :  '3306',
      //  数据库连接端口,默认为3306时,可省略
        user     : 'xxx',
        //  数据库用户名
        password : 'xxx',
        //  数据库密码
        database : 'test',
       //  要连接的数据库名
        charset  : 'utf8_general_ci'
   //  数据库编码
} 

//用module.exports暴露出这个接口,
module.exports = mysql; 

再在工程的目录下,新建一个common目录,并在该目录下新建一个js文件命名为dbAction文件。键入下面代码:

var mysql = require('mysql');
var dbConfig = require('../config/mysql');

// 使用连接池连接数据库,避免开太多的线程,提升性能
var pool = mysql.createPool(dbConfig);

/**
 * 封装数据库查询结果,返回JSON
 */
function responseDoReturn(res,result){
    if (typeof result === 'undefined'){
        res.json({
            code: '201',
            msg:'failed to do'
        });
    } else {
        res.json(result);
    }
};

/**
 * 封装数据库查询
 */
function query(req, res, next){
    pool.getConnection(function(err, connection){
        connection.query('select * FROM table_name',function(err,rows){
            responseDoReturn(res,rows);
            // 释放数据库连接
            connection.release();
        })
    })
}

// 导出模块
module.exports = {
    queryAll: query
}

想要测试封装的效果的话,就要新建一个测试路由。当然,也可以修改之前新建的测试路由,代码修改如下:

var express = require('express');
var dbAction = require('../common/basicConnection');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
    dbAction.queryAll(req, res, next)
});

module.exports = router;

启动(重启)工程,打开浏览器,键入localhost:3000/sqlTest,就可以看到浏览器页面里输入查询结果。

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/front-end/node-express-mysql.html

Like (3)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
Previous 2020年8月22日
Next 2020年8月31日

相关推荐

  • 一道前端函数面试题

    这题的规则是这样的 拿到这种题目,我先来说说我自己的做题流程,一般会去找它最简单的形态。我们一步一步来拆解。 先去掉 sumOf() 变成了以下形态 嗯&#82…

    2020年11月22日
    1.1K
  • HTTP三次握手与四次挥手详解

    前端工程师面试的时候,关于HTTP三次握手是最常被询问的一个知识点,往往很多人,都是知道其原理及过程,就是用话语表达不出来,正式一点,就是词不达意。今天浏览到一篇关于HTTP三次握…

    2019年12月6日
    1.6K
  • typeof 和 instanceof的区别

    在前端开发过程中,typeof与instanceof是经常要用到的, 了解两者的区别是每一个合格前端工程师所要掌握的。 JavaScript中typeof和instanceof常用…

    2019年6月18日
    1.6K
  • 异步神器async-await

    async-await和Promise的关系 async-await是建立在promise机制之上 ,async-await是promise和generator的语法糖。增强了代码…

    2019年6月3日
    1.5K
  • WEB前端工程师必备技能

    前端开发到底是一个怎样的工作?都需要掌握什么技能?怎样区分初级、中级、高级?作为一名前端开发工程师,应该朝哪个方向发展?怎样提升自己的专业技能…… 你是否也曾有这样一些疑问,你的这…

    2019年6月6日
    2.8K
  • 前端开发工程师怎样独立调试前端项目?

    在前后端分离开发的大环境下,前端开发已经不仅仅局限于所谓的切图,写页面的工作,同时,也给前端开发定义了新的含义。有前后端分离项目开发的工程师,都知道,这样的项目开发起来有多么的方便…

    2020年8月31日
    1.5K
  • Angular与vue对比

    Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面。当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强。如今,已有许多开发…

    2019年6月13日
    1.7K
  • vue开发小程序项目总结

    最近全权负责一个小程序的前端开发工作,之前小程序使用原生技术开发过一版,当时由于进入项目组晚,且项目开发周期短,没有详细了解项目的各种情况,导致后期开发过程中出现各种各样的让人烦心…

    2020年11月24日
    1.4K
  • CSS布局之圣杯与双飞翼布局

    所谓圣杯布局和双飞翼布局其实解决的问题是相同的,都是解决左右两栏固定宽度,中间部分自适应,其中某部分内容比其他内容高的时候,保证三者元素等高。他俩的区别就是:圣杯用padding。…

    2019年6月18日
    1.8K
  • 浏览器渲染机制

    为什么要了解浏览器渲染页面机制?主要是还是性能的优化。 了解浏览器如何进行加载,我们可以在引用外部样式文件、外部JS时,将它们放到合适的位置,是浏览器以最快的速度,将文件加载完毕。…

    2019年5月31日
    1.6K

发表回复

Please Login to Comment