这里要说明一下就是在使用的时候,前面说过了node的执行的时候,只执行一次,后边是就是使用缓存了,所以的新建组件的时候,就按照这种的执行顺序,来进行使用。
express连接数据库
1.首先新建连接数据库的配置文件,新建conf的文件夹,新建db.js文件
const env = process.env.NODE_ENV // 环境参数
// 配置
let MYSQL_CONF
let REDIS_CONF
if (env === 'dev') {
// mysql
MYSQL_CONF = {
host: 'localhost',
user: 'root',
password: '123456',
port: '3306',
database: 'myblog',
dateStrings : true
}
// redis
REDIS_CONF = {
port: 6379,
host: '127.0.0.1'
}
}
if (env === 'production') {
}
module.exports = {
MYSQL_CONF,
REDIS_CONF
}
连接数据库,执行文件
新建db文件夹,新建mysql.js的文件
引用数据库的对象,同时引用数据库的配置文件
创建数据库的对象 进行连接
创建sql的执行函数 创建一个promise的,暴露出来
const mysql = require('mysql')
const { MYSQL_CONF } = require('../conf/db')
// 创建链接对象
const con = mysql.createConnection(MYSQL_CONF)
// 开始链接
con.connect()
// 统一执行 sql 的函数
function exec(sql) {
const promise = new Promise((resolve, reject) => {
con.query(sql, (err, result) => {
if (err) {
reject(err)
return
}
resolve(result)
})
})
return promise
}
//escape: mysql.escape 是MySQL的sql的注入
module.exports = {
exec,
escape: mysql.escape
}
2 新建路由的文件,根据业务逻辑进行新建路由文件,
路由文件新建在routes里面
新建的路由的对象,需要在app.js里面进行注册
app.js
var indexRouter= require('./routes/index')
app.use('/api',indexRouter)
var express = require('express')
var router = express.Router();
//使用router对象进行路由书写
router.post('/login',function(req,res,next){
//获取post的参数
const {username,password} = req.body
//引入处理逻辑进行使用
})
router.get('/login',function(req,res,next){
//获取get的参数
const {username,password} = req.query
//引入处理逻辑进行使用
})
module.exports = router;
router里面可以传入多个中间件,比如一些处理之前的需要判断是否登录的,需要写成公共的中间件的,可以直接传入进去使用
处理逻辑,接口收到参数需要进行逻辑操作,操作数据库,所以新建controller进行操作,
新建controller文件夹
可以按照逻辑的来分为操作的文件
例如 新建文件index.js
const {exec} = require('../db/mysql')
//获取列表信息的逻辑
const getList = (id)=>{
let sql = `select * from blogs where 1=1 `
if (id) {
sql += `and author='${author}' `
}
sql += `order by createtime desc;`
// exec返回 promise,不进行结果接收,将对象直接返回上去
return exec(sql)
}
//这个是直接返回结果的,接收promise 直接返回结果
const delBlog = (id, author) => {
// id 就是要删除博客的 id
const sql = `delete from blogs where id='${id}' and author='${author}';`
return exec(sql).then(delData => {
// console.log('delData is ', delData)
if (delData.affectedRows > 0) {
return true
}
return false
})
}
module.exports = {
getList,
delBlog,
}