node koa 连接mysql
2022/9/13 2:25:43
本文主要是介绍node koa 连接mysql,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Node Koa 连接Mysql 简单案例
基础代码
基础代码
const Koa = require('koa') const Router = require('koa-router') // 实例 const app = new Koa() const router = new Router() // 服务 /*路由接口*/ // 可以使用链式调用 router .get('/', async ctx => { ctx.status = 200 //状态码 ctx.body = 'Hello' }) .get('/cxk', async ctx => { ctx.status = 200 //状态码 ctx.body = 'Hello cxk' }) //.push(...) //.delete(...) //.... /*配置路由*/ app.use(router.routes()).use(router.allowedMethods()) // 监听服务端口 app.listen(3000, () => { console.log('http://localhost:3000') })
需要增加的依赖: npm i mysql koa2-cors koa-bodyparser -s
名称 | 作用 |
---|---|
mysql | 连接mysql中间件 |
koa2-cors | koa--跨域 |
koa-bodyparser | koa--获取接口body请求参数 |
新建文件bd.js
///bd.js const mysql = require('mysql') // 数据库 const poolSql = mysql.createPool({ host: 'localhost', //url port: 3306, //端口 user: 'root', //库名称 password: '123456', //数据库密码 database: 'sys', //表名称 }) // 查询 function query(sql, value = []) { return new Promise((resolve, reject) => { poolSql.query(sql, value, (error, result) => { error && reject(error) //有错误信息时reject resolve(result) //抛出查询结果 }) }) } module.exports = query
表结构
最终代码
const Koa = require('koa') const Router = require('koa-router') const poolSql = require('./bd.js') //sql操作 const cors = require('koa2-cors') //跨域 const parser = require('koa-bodyparser') //获取接口参数 // 实例 const app = new Koa() const router = new Router() /*路由接口*/ // 可以使用链式调用 router .get('/', async ctx => { ctx.status = 200 //状态码 ctx.body = '<h1>Hello</h1>' }) // 查询 .get('/user', async ctx => { ctx.status = 200 //状态码 let body = { code: '0', data: null, message: 'ok' } try { let _sql = 'SELECT * FROM sys_user' let data = await poolSql(_sql) body.data = data } catch (error) { body.message = error body.code = '1' } finally { ctx.body = body } }) // 添加 .post('/add', async ctx => { let body = { code: '0', data: null, message: 'ok' } ctx.status = 200 //状态码 let _info = ctx.request.body ?? {} //获取参数 if (!_info.name) { body.message = '用户名不能为空' body.data = null ctx.body = body return } try { let _sql = 'INSERT INTO sys_user (name,password) VALUES (?,?)' let value = [_info.name, _info.password ?? ''] //数组元素会替换对应的问号 let data = await poolSql(_sql, value) body.data = data } catch (error) { if (error?.errno == '1062') { body.message = '用户名已存在' } else { body.message = error } body.code = '1' } finally { ctx.body = body } }) // 更新 .put('/put', async ctx => { let body = { code: '0', data: null, message: 'ok' } ctx.status = 200 //状态码 let _info = ctx.request.body ?? {} //获取参数 if (!_info.name) { body.message = '用户名不能为空' ctx.body = body return } if (!_info.id) { body.message = '用户id不能为空' ctx.body = body return } if (!Number(_info.id)) { body.message = 'id格式不正确' ctx.body = body return } try { let _sql = 'UPDATE sys_user SET name=? WHERE id=?' let value = [_info.name, Number(_info.id)] //数组元素会替换对应的问号 let data = await poolSql(_sql, value) body.data = data } catch (error) { body.message = error body.code = '1' } finally { ctx.body = body } }) // 删除 .delete('/delete/:id', async ctx => { let body = { code: '0', data: null, message: 'ok' } ctx.status = 200 //状态码 let _info = ctx.params ?? {} //获取参数 if (!Number(_info.id)) { body.message = 'id格式不正确' ctx.body = body return } try { let _sql = 'DELETE FROM sys_user WHERE id=?' let value = [Number(_info.id)] let data = await poolSql(_sql, value) body.data = data } catch (error) { body.message = '删除失败' body.code = '1' } finally { ctx.body = body } }) // 添加接口固定前缀 router.use('/api', router.routes()) // .use('/pc', pcRouter.routes()) // .use('/android', androidRouter.routes()) app .use(cors() /*跨域 */) .use(parser() /*获取接口参数 */) .use(router.routes() /*配置路由*/) .use(router.allowedMethods() /*配置路由*/) // 服务端口 app.listen(3000, () => { console.log('http://localhost:3000') })
这篇关于node koa 连接mysql的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧
- 2024-12-07MySQL入门:新手必读的简单教程
- 2024-12-07MySQL入门:从零开始学习MySQL数据库
- 2024-12-07MySQL索引入门:新手快速掌握MySQL索引技巧
- 2024-12-06BinLog学习:MySQL数据库BinLog入门教程
- 2024-12-06Binlog学习:MySQL数据库的日志管理入门教程