nodeJS+Express+mysql

前后端分离技术是现如今开发的主流开发方式, 所以现在很多前端可能不是很了解后台, 知道的可能就是如何和接口去做交互,那么在这篇博客里,我们就来看看,使用我们的nodeJS怎样来写后台服务

通过小案例进行说明哈,首先项目的层级结构如下:

db中写的是对数据库进行的操作

    customer是customer这个模块的对数据库的操作代码

    pool是连接池,创建连接对象

router中写的是路由,可以根据路径做不同的操作,此处使用的是express中的路由.写完直接导出,后面使用的话直接导入,并且应用上就可以了

index是主文件,主要是创建服务器对象,启动服务器等

package是配置文件

1.首先我们来看db底下的pool文件,代码如下:

const mysql = require('mysql')

// 创建连接池对象
const pool = mysql.createPool({
    host:'127.0.0.1',
    port:3306,
    user:'root',
    password:'root',
    database:'test'
})

// 把连接池对象进行导出
module.exports = {
    pool
}

   db文件夹下customer文件,代码如下:

// 封装方法
// 导入连接池对象
const {pool} = require('./pool')

// 查询
let findAll = (handle)=>{
    // 获取连接对象,第二个参数代表连接对象
    pool.getConnection((err,connection)=>{
        if(err) throw err;
        let sql = 'select * from account_customer'
        connection.query(sql,[],(err,result)=>{
            if(err) throw err;
            handle(result)
            // 释放连接对象到连接池
            connection.release()
        })
    })
}
// 根据顾客名字模糊查询

// 批量删除

// 通过id获取顾客信息
let findById = (handle,id)=>{
    pool.getConnection((err,connection)=>{
        if(err) throw err;
        let sql = 'select * from account_customer where id=?'
        connection.query(sql,[id],(err,result)=>{
            if(err) throw err;
            handle(result)
            connection.release()
        })
    })
}

// 通过id删除顾客信息
let deleteById = (handle,id)=>{
    pool.getConnection((err,connection)=>{
        if(err) throw err;
        let sql = 'delete from account_customer where id=?'
        connection.query(sql,[id],(err,result)=>{
            if(err) throw err;
            handle(result)
            connection.release()
        })
    })
}


// 保存或者更新顾客信息
let saveOrUpdate = (handle,obj)=>{
    pool.getConnection((err,connection)=>{
        if(err) throw err;
        let sql = ''
        // 更新的时候需要id
        if(obj.id){
            // 若有id存在,那么是更新
            sql = 'update account_customer set description=?,money=?,type=? where id=?'
        }else{
            // 保存sql
            sql = 'insert into account_customer(description,money,type) values(?,?,?)'
        }

        connection.query(sql,[obj.description,obj.money,obj.type,obj.id],(err,result)=>{
            if(err) throw err;
            handle(result)
            connection.release()
        })
    })
}

module.exports = {
    findAll,
    findById,
    deleteById,
    saveOrUpdate
}

 代码中注释写的很清楚了,其实就是去执行sql语句

 

2.然后再看下router中的customer文件,代码如下:

const express = require('express')
let customerDB = require('../db/customer')
// 创建路由
let customer = express.Router()

// 设置路由,不同的接口实现不同的功能
// 查询所有顾客信息
customer.get('/findAll',(req,res)=>{
    // 调用dao层的方法,访问数据库
    customerDB.findAll((result)=>{
        res.send(result)
    })
})

customer.get('/findById',(req,res)=>{
    customerDB.findById((result)=>{
        res.send(result)
    },req.query.id)
})

customer.get('/deleteById',(req,res)=>{
    customerDB.deleteById((result)=>{
        res.send(result)
    },req.query.id)
})

customer.post('/saveOrUpdate',(req,res)=>{
    // console.log(req.body)
    customerDB.saveOrUpdate((result)=>{
        res.send('保存成功')
    },req.body)
})

module.exports = customer

这里主要是对路径进行过滤,根据不同的路径来调用不同的方法,从而执行不同的sql,查询到数据后,再返回到页面上.此处的路由,进行了导出,后面在inde.js中需要使用.

 

3.再看下index.js文件,代码如下:

const express = require('express')
const bodyParser = require('body-parser')

// 路由对象
const customer = require('./router/customer')

// let customer = express.Router()
// 创建应用
let app = express()

app.use(bodyParser.urlencoded({extended:true}))

// 使用拦截器
app.all('*',(req,res,next)=>{
    res.set({
        "Access-Control-Allow-Origin":"*",
        "Content-Type":"text/plain;charset=utf-8"
    })
    next()
})

// 使用导进来的路由对象
app.use(customer)

// 启动服务器,设置端口
app.listen(3000,()=>{
    console.log('3000端口启动......')
})

 在index文件中要导入路由对象,并且要使用app.use来使用导入的路由对象

4.最后看下package.json中的配置,看看要安装哪些依赖

 

以上就是全部内容来,后面研究下怎么把它生成swagger并且部署到阿里云上,欢迎讨论哈 !

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值