mysql78
Version:
nodejs koa78封装 上传类
133 lines (98 loc) • 5.47 kB
Markdown
<h1 align="center">koa78-mysql78</h1>
<div align="center">
[](./README.md) | 简体中文
[](https://www.apache.org/licenses/LICENSE-2.0)
[](https://dev.azure.com/www778878net/basic_ts/_build/latest?definitionId=24&branchName=main)
[](https://qm.qq.com/cgi-bin/qm/qr?k=it9gUUVdBEDWiTOH21NsoRHAbE9IAzAO&jump_from=webapi&authKey=KQwSXEPwpAlzAFvanFURm0Foec9G9Dak0DmThWCexhqUFbWzlGjAFC7t0jrjdKdL)
</div>
[](http://www.778878.net/docs/#/koa78-mysql78/)
[](https://qm.qq.com/cgi-bin/qm/qr?k=it9gUUVdBEDWiTOH21NsoRHAbE9IAzAO&jump_from=webapi&authKey=KQwSXEPwpAlzAFvanFURm0Foec9G9Dak0DmThWCexhqUFbWzlGjAFC7t0jrjdKdL)
1. 十八年ERP开发经验 十年云开发经验 十五年股票期货投资经验 十年投资分析平台开发经验
2. 技术不高 了解业务 擅长解决生产经营实际问题
3. 逐步把多年开发优化 并且在一直稳定运行中的项目开源
1. 封装koa 减少学习成本
2. 稳定:运行数年 二台单核1G机器搞定数千并发
3. 开发快:几行代码搞定增删查改 批量新增等常用API
4. 效率高:有完善的低代码前后端框架 在框架下开发 1后端可轻松配合4前端以上
5. 易扩展:业务表与数据表对应 一个目录就是一套小功能 一个文件就是一个数据表
6. 适应强:同时运行在阿里云和腾迅云
7. 易调试:可设置追踪某几个用户或某表或某目录的所有调用
8. 易学习:十行代码搞定 想装不会都难
9. 易运维:有完善的api调用计数和耗时统计 还有出错微信报警机制
10. 更新快:主要运营中的项目也是这套 如有bug或新功能 必然及时更新
11. 易重构:一个目录一个小系统 一个版本一个路径 新旧api可长期共存 边开车边换胎
12. SAAS:支持分帐套或分用户数据隔离 同表不同权 完善权限控制
**use for `nodejs ts` project**
```
npm i koa78-mysql78
```
- isLog: boolean - 是否启用日志记录
- isCount: boolean - 是否启用性能统计
- _pool: mysql.Pool | null - MySQL连接池
- constructor(config: object): 创建Mysql78实例
- creatTb(up: UpInfo): Promise<string> - 创建系统常用表
- doGet(cmdtext: string, values: any[], up: UpInfo): Promise<any[]> - 执行SELECT查询
- doM(cmdtext: string, values: any[], up: UpInfo): Promise<number> - 执行UPDATE操作
- doMAdd(cmdtext: string, values: any[], up: UpInfo): Promise<number> - 执行INSERT操作
- doT(cmds: string[], values: any[][], errtexts: string[], logtext: string, logvalue: any[], up: UpInfo): Promise<string> - 执行事务
- doTran(cmdtext: string, values: any[], con: mysql.PoolConnection, up: UpInfo): Promise<any> - 执行单个事务操作
- getConnection(): Promise<mysql.PoolConnection | null> - 获取数据库连接
- releaseConnection(client: mysql.PoolConnection): Promise<void> - 释放数据库连接
- setWarnHandler(handler: Function): void - 设置自定义警告处理器
- close(): Promise<void> - 关闭连接池
```
import Mysql78 from "koa78-mysql78";
import UpInfo from "koa78-upinfo";
const config = {
host: "localhost",
port: 3306,
user: "root",
password: "your_password",
database: "your_database",
isLog: true,
isCount: true
};
const mysql78 = new Mysql78(config);
const upInfo = new UpInfo(null).getGuest();
// 执行查询
const result = await mysql78.doGet("SELECT * FROM users WHERE id = ?", [1], upInfo);
// 执行更新
const affectedRows = await mysql78.doM("UPDATE users SET name = ? WHERE id = ?", ["John", 1], upInfo);
// 执行插入
const insertId = await mysql78.doMAdd("INSERT INTO users (name, email) VALUES (?, ?)", ["Alice", "alice@example.com"], upInfo);
// 执行事务
const transactionResult = await mysql78.doT(
["UPDATE users SET balance = balance - ? WHERE id = ?", "UPDATE users SET balance = balance + ? WHERE id = ?"],
[[100, 1], [100, 2]],
["转出失败", "转入失败"],
"转账操作",
[],
upInfo
);
// 设置自定义警告处理器
mysql78.setWarnHandler(async (info, kind, up) => {
console.log(`自定义警告处理: ${kind} - ${info}`);
// 在这里可以实现自定义的警告处理逻辑
});
// 关闭连接池
await mysql78.close();
```
- 使用 `getConnection()` 获取连接后,记得使用 `releaseConnection()` 释放连接。
- `isLog` 和 `isCount` 选项会影响性能,建议仅在调试时启用。
- 事务操作请优先使用 `doT` 方法,而不是手动管理事务。
- 在生产环境中,请确保正确处理所有可能的错误和异常。
- 可以通过 `setWarnHandler` 方法设置自定义的警告处理逻辑,以便更灵活地处理和记录警告信息。
- 使用完毕后,请调用 `close()` 方法关闭连接池,以释放资源。
you can see test/