基于MySQL 数据库+ Express 对外提供用户列表的API 接口服务。用到的技术点如下:
① 搭建项目的基本结构
② 创建基本的服务器
③ 创建db 数据库操作模块
④ 创建 user_ctrl 业务模块
⑤ 创建 user_router 路由模块
① 启用 ES6 模块化支持
② 安装第三方依赖包
import mysql from 'mysql2'
const pool = mysql.createPool({
host: '127.0.0.1',
port: 3306,
database: 'my_db_01',
user: 'root',
password: 'admin123',
})
export default pool.promise()
import db from '../db/index.js'
// 使用 ES6 的按需导出语法,将 getAllUser 方法导出出去
export async function getAllUser(req, res) {
try {
const [rows] = await db.query('select id, username, password, status from users')
res.send({
status: 0,
message: '获取用户列表数据成功!',
data: rows,
})
} catch (err) {
res.send({
status: 1,
message: '获取用户列表数据失败!',
desc: err.message,
})
}
}
import express from 'express'
import { getAllUser } from '../controller/user_ctrl.js'
const router = new express.Router()
router.get('/user', getAllUser)
export default router
import express from 'express'
import userRouter from './router/user_router.js'
const app = express()
app.use('/api', userRouter)
app.listen(80, () => {
console.log('server running at http://127.0.0.1')
})
{
"type": "module",
"name": "code2",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"mysql2": "^2.2.5"
}
}
① 能够知道如何使用 ES6 的模块化语法
默认导出与默认导入、按需导出与按需导入
② 能够知道如何使用 Promise 解决回调地狱问题
romise.then()、promise.catch()
③ 能够使用 async/await 简化 Promise 的调用
方法中用到了 await,则方法需要被 async 修饰
④ 能够说出什么是 EventLoop
EventLoop 示意图
⑤ 能够说出宏任务和微任务的执行顺序
在执行下一个宏任务之前,先检查是否有待执行的微任务