Node + Express + MySQL开发接口

本文介绍了一个使用Node.js和MySQL实现的简单用户信息接口。该接口通过连接池管理数据库连接,提供了获取用户列表的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现效果

在这里插入图片描述
在这里插入图片描述

实现步骤

在这里插入图片描述

一、DBConfig.js

/*
 * @Descripttion:文件配置了,数据库信息
 * @version:
 * @Author: zhangfan
 * @email: 2207044692@qq.com
 * @Date: 2020-10-19 11:49:28
 * @LastEditors: zhangfan
 * @LastEditTime: 2020-10-19 11:52:45
 */
const config = {
    // 启动端口
    port: 3000,
    // 数据库配置
    database: {
        DATABASE: 'mysql',
        USERNAME: 'root',
        PASSWORD: '123456',
        PORT: '3306',
        HOST: 'localhost',
    }
}

module.exports = config

二、DBHelp.js

/*
 * @Descripttion:数据库连接池的连接与释放
 * @version:
 * @Author: zhangfan
 * @email: 2207044692@qq.com
 * @Date: 2020-10-19 11:51:28
 * @LastEditors: zhangfan
 * @LastEditTime: 2020-10-19 11:53:36
 */
const DB_MYSQL = require('mysql');
const DB_CONFIG = require('./DBConfig');
/**
 * 数据库连接池
 * @type {Pool}
 */
const pool = DB_MYSQL.createPool({
    host: DB_CONFIG.database.HOST,
    user: DB_CONFIG.database.USERNAME,
    password: DB_CONFIG.database.PASSWORD,
    database: DB_CONFIG.database.DATABASE,
    port: DB_CONFIG.database.PORT
});
/**
 * 通用方法
 * @param sql
 * @param options
 * @param callback
 */
const DB = (sql, options) =>{
    options = (options) ? options:{}
    return new Promise((resolve, reject) => {
        pool.getConnection((error, connection) => {
            if (error) {
                reject(error);
            } else {
                connection.query(sql, options, (error, results, fields) => {
                    //事件驱动回调
                    if (results){
                        resolve(results);
                    }
                    if (error) {
                        reject(error)
                    }
                    //释放连接
                    // connection.release();
                });
            }
            pool.releaseConnection(connection);
        });
    })
};
module.exports = DB;

三、getUserList.js

/*
 * @Descripttion:获取用户信息接口封装
 * @version:
 * @Author: zhangfan
 * @email: 2207044692@qq.com
 * @Date: 2020-10-19 11:55:06
 * @LastEditors: zhangfan
 * @LastEditTime: 2020-10-19 15:02:47
 */

let _ = require('lodash');
let DBHelp = require('../config/DBHelp.js');
let getArticle = (data, success) =>{
    // SQL 语句
    let SQL = 'SELECT * FROM userlist';
    const resultData = {
        code: null,
        data: null,
        codeMessage: null
    }
    DBHelp(SQL, (error, result) =>{
        if(error){
            resultData.error = error.message
        }
        resultData.code = 200;
        resultData.data = result;
        resultData.codeMessage = 'success'
        success(resultData);
    })
}
module.exports = getArticle

四、index.js

/*
 * @Descripttion:
 * @version:
 * @Author: zhangfan
 * @email: 2207044692@qq.com
 * @Date: 2020-10-19 10:51:20
 * @LastEditors: zhangfan
 * @LastEditTime: 2020-10-19 14:47:02
 */
var express = require('express');
var router = express.Router();
let getUserList = require('../controller/getUserList.js');

/**
 * 数据查询
 */
router.get('/userlist', (request, response, next)=>{
  getUserList(request.query, data =>{
      response.end(JSON.stringify(data));
    })
});

module.exports = router;

五、app.js

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

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

const app = express();

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

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.all('*',function(request, response, next){
  response.header('Access-Control-Allow-Origin','*');
  response.header('Access-Control-Allow-Headers','X-Requested-With');
  response.header('Access-Control-Allow-Methods','PUT,POST,GET,DELETE,OPTIONS');
  response.header('X-Powered-By','3.2.1');
  response.header('Content-Type','application/json;charset=utf-8');
  next();
});
// 抛出接口
app.use('/', indexRouter);
app.use('/user', 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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值