minervadb
v1.0.1
Published
A ThinkPHP6-style JavaScript database library based on mysql2 with connection pooling, transactions, and powerful query builder
Maintainers
Readme
MinervaDB — TP6 风格的 JavaScript 数据库库
一个类似 ThinkPHP6 风格的 JavaScript 数据库操作库,基于 mysql2,支持连接池、事务与强大的查询构造器。
特性
- 🚀 高性能:基于
mysql2的连接池 - 💾 事务支持:自动与手动事务 API
- 🔍 查询构造器:链式调用,功能丰富
- 📝 TP6 风格 API:使用体验接近 ThinkPHP6
- 🛡️ 类型安全:参数化查询防止 SQL 注入
安装依赖
npm install
# 或单独安装 mysql2
npm install mysql2快速开始
const { Database } = require('./lib');
const config = {
host: '127.0.0.1',
port: 3306,
user: 'root',
password: '123456',
database: 'test1',
charset: 'utf8mb4',
timezone: '+08:00',
connectionLimit: 10,
queueLimit: 0
};
const db = new Database(config);
await db.init();
// 使用 query 或 QueryBuilder
const users = await db.table('users').where('age >= ?', 18).limit(10).select();
console.log(users);
await db.close();运行示例
仓库包含 examples/,两个示例:
examples/basic-usage.js:插入/查询/更新示例(展示raw使用与 toSql)。examples/transaction.js:演示自动事务。
运行示例(示例会读取仓库根目录的 .env):
node .\examples\basic-usage.js
node .\examples\transaction.js注意:examples/* 会静默加载 .env(如果存在),库本身不会在 require 时产生副作用。
运行测试
我们为 QueryBuilder 添加了单元测试(Jest),可以通过下面命令运行:
npm install
npm test主要 API
请参考代码中的 Database 与 QueryBuilder 的方法:
init()、query()、execute()insert()、insertAll()、update()、delete()select()、find()、count()table()获取QueryBuilder- 事务:
startTransaction()、commit()、rollback()、transaction(callback)
查询构造器示例
// 链式构造
await db.table('users')
.field(['id','username','email'])
.where('age >= ?', 18)
.where({ status: 1 })
.order('id', 'DESC')
.limit(10)
.select();事务示例
// 自动事务
await db.transaction(async (db) => {
const id = await db.insert('users', { username: 'u1' });
await db.insert('profiles', { user_id: id });
});
// 手动事务
await db.startTransaction();
try {
await db.insert('users', data);
await db.commit();
} catch (err) {
await db.rollback();
}调试 SQL
const sql = db.table('users').where('age >= ?', 18).limit(10).toSql();
console.log(sql);许可证
MIT
