04-express连接mysql数据库

04-express连接mysql数据库

1.express生成目录

前提是全局安装了express
npm i express -g
express 项目名称

2.安装mysql

npm install mysql
在项目根目录下新建 model 目录
model 中新建 Model.js 写mysql 的基类

const mysql = require('mysql')
const pool = mysql.createPool({
  host: 'localhost',
  user: 'root',
  password: 'root',  // 注意修改为你自己的数据库密码
  port: '3306',
  database: 'newsdatabase'  // 注意修改为你自己的数据库密码
})
/* 封装一个数据库模型基类 */
module.exports = class Model {
  /**
   * 描述:执行sql 语句的方法
   * @param {*} sql  要执行的 sql 语句
   * @param {*} params 给sql 语句占位符进行赋值的参数 数组
   * @returns
   */
  static query(sql, params) {
    return new Promise((resolve, reject) => {
      pool.getConnection((err, connection) => {
        if (err) {
          connection.release()
        } else {
          connection.query(sql, params, (err, result) => {
            if (err) {
              reject(err)
            } else {
              resolve(result)
            }
            // 结束会话,释放连接
            connection.release()
          })
        }
      })
    })
  }
}

在model下新建AuthModel.js(这个名称随意起名)

module.exports = class AuthModel extends require('./Model') {
  /**
   * 描述:查询用户列表数据
   * @returns 返回用户列表数据
   */
  static findUserList() {
    return new Promise((resolve, reject) => {
      let sql = 'select * from info_user'
      this.query(sql)
        .then((res) => {
          resolve(res)
        })
        .catch((err) => {
          reject(err)
        })
    })
  }
}

在项目根目录下新建 dao 目录,在dao目录下新建AuthDao.js

module.exports = class AuthDao extends require('../model/AuthModel') {
  /**
   * 描述:查询用户数据列表
   * @param {*} req
   * @param {*} res
   */
  static async findUserDao(req, res) {
    const result = await this.findUserList()
    console.log(result)
    res.send(result)
  }
}

在routes/users.js中修改

var express = require('express')
var router = express.Router()
const AuthDao = require('../dao/AuthDao')
// 验证数据库的接口
router.get('/', (req, res) => {
  AuthDao.findUserDao(req, res)
})
module.exports = router

在app.js添加跨域代码

app.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();
//设置跨域访问
app.all('*', function (req, res, next) {
  // 设置请求头为允许跨域
  res.header('Access-Control-Allow-Origin', '*')
  // res.header('Access-Control-Allow-Origin', '*')
  // 设置服务器支持的所有头信息字段
  res.header(
    'Access-Control-Allow-Headers',
    'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild, sessionToken'
  )
  // 设置服务器支持的所有跨域请求的方法
  res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS')
  res.header('Access-Control-Allow-Credentials', true)
  if (req.method.toLowerCase() == 'options') {
    res.send(200) // 让options尝试请求快速结束
  } else {
    next()
  }
})

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

测试,启动项目 npm start
连接数据库成功,并成功返回数据
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值