手动搭建koa+ts项目框架(mysql篇)
2023-12-13 15:03:39
前言
本文基于手动搭建koa+ts项目框架(路由篇)新增mysql
使用
在Node.js中连接数据库的方式可以有多种,但通常情况下,我们会在应用程序启动时创建数据库连接,然后在整个应用程序生命周期中重用该连接。
一次性创建数据库连接的优点是可以减少每次请求时的开销,因为连接到数据库需要花费一定的时间。如果每次请求都创建新的连接,可能会拖慢响应时间并增加服务器的负载。
相反,如果我们在应用程序启动时创建连接,并在需要时重复使用该连接,可以提高性能并减少不必要的开销。通常,连接池是常见的实现方式,它可以管理连接的创建和重用,确保连接的可靠性和高效性。
所以,一般建议在Node.js中创建一个数据库连接,然后在整个应用程序生命周期中重用该连接,而不是每次调用接口都创建一个新的连接。
一、安装mysql
npm i -S mysql2
还需安装koa-bodyparser
插件,方便解析请求值(需在使用路由前使用)
npm i -S koa-bodyparser
and
npm i -D @types/koa-bodyparser
使用和不使用的区别如下图红框部分
二、引入mysql
并使用
./src/data-base/config.ts
文件
export const config = {
DATABASE: 'user', //数据库名称
USERNAME: 'root', //mysql用户名
PASSWORD: '12345', //mysql密码
PORT: 3306, //mysql端口号
HOST: 'localhost' //服务器ip
}
./src/data-base/index.ts
文件
import mysql from 'mysql2'
import { config } from './config'
// 创建数据库的连接
const connection = mysql.createConnection({
host: config.HOST,
user: config.USERNAME,
password: config.PASSWORD,
database: config.DATABASE,
port: config.PORT
});
export function mysqlQuery(sql: string) {
return new Promise((resolve, reject) => {
connection.query(sql, (err, results) => {
if (err) {
reject(err)
} else {
resolve(results)
}
});
})
}
./src/routes/index.ts
文件引入数据查询
import Koa from 'koa'
import { mysqlQuery } from '../data-base'
const router = require('koa-router')()
router.get('/', async (ctx: Koa.Context) => {
ctx.body = 'Hello Index'
})
router.post('/login',async(ctx: Koa.Context)=>{
// const {userName, password} = ctx.request.body as {userName: string, password: string}
const sql = `select * from user where user_name = 'admin' and pass_word = '123456'`;
const result = await mysqlQuery(sql);
ctx.body= {
code:'200',
msg:'登录成功'
}
})
export default router
./src/index.ts
文件新增koa-bodyparser
中间件
import Koa from "koa";
import logger from 'koa-logger'
import bodyparser from 'koa-bodyparser'
import index from "./routes/index"
import users from "./routes/user"
const app = module.exports = new Koa();
// 中间件
app.use(logger())
app.use(bodyparser({ // 需在使用路由前引入,否则不生效
enableTypes: ['json', 'form', 'text'],
}))
// 日志记录
app.use(async (ctx, next) => {
const start = new Date()
await next()
const ms = Number(new Date()) - Number(start)
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
})
// 接口路由
app.use(index.routes())
app.use(users.routes())
if (!module.parent) app.listen(3000);
执行npm run dev
开启服务,使用postman
调用/login
接口
总结
TS版本需使用mysql2
插件,mysql
只支持js版本的
还需安装koa-bodyparser
插件,方便解析请求值(或者使用koa-body
)
如有启发,可点赞收藏哟~
文章来源:https://blog.csdn.net/weiCong_Ling/article/details/134931204
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!