下面是一个简单的示例,演示了如何在Koa应用程序中使用MySQL连接池:
const Koa = require('koa');
const Router = require('koa-router');
const mysql = require('mysql');
const app = new Koa();
const router = new Router();
// 创建MySQL连接池
const pool = mysql.createPool({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
});
// 使用连接池执行查询的中间件
app.use(async (ctx, next) => {
ctx.db = await getConnectionFromPool();
await next();
ctx.db.release(); // 释放连接回连接池
});
// 路由示例
router.get('/users', async (ctx) => {
const [rows] = await ctx.db.query('SELECT * FROM users');
ctx.body = rows;
});
// 将路由挂载到应用程序
app.use(router.routes()).use(router.allowedMethods());
// 启动应用程序
const port = 3000;
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
// 从连接池中获取连接的辅助函数
function getConnectionFromPool() {
return new Promise((resolve, reject) => {
pool.getConnection((error, connection) => {
if (error) {
reject(error);
return;
}
resolve(connection);
});
});
}
在这个示例中,我们在Koa应用程序中使用了一个中间件来处理数据库连接。在每个请求中,我们从连接池中获取一个连接,并将其附加到 ctx.db
上,以便在路由中使用。在中间件的最后,我们使用 ctx.db.release()
来释放连接,将其返回到连接池中。
通过使用连接池,您不必手动管理连接的打开和关闭,MySQL客户端库将会在需要时自动进行管理,这样您的代码更简洁,更易于维护。
标签:const,koa,db,ctx,mysql,router,连接池 From: https://www.cnblogs.com/yuyanc/p/18120177