Knex.js 用于 JavaScript (Node.js):完整指南及示例
\n\n1. 什么是 Knex.js 以及为什么需要它
\nKnex.js 是一个强大、灵活且高性能的 Node.js SQL 查询构建器。与 Sequelize 或 TypeORM 等 ORM(对象关系映射)库不同,Knex.js 并不试图将您完全从 SQL 中抽象出来。相反,它提供了一个方便、可链式调用的 API 来以编程方式构建 SQL 查询,同时保留对最终 SQL 的完全控制。这使得 Knex.js 成为那些注重性能、查询透明度和灵活性,同时又希望避免编写原始 SQL 字符串(存在语法错误和 SQL 注入风险)的项目的理想选择。
\nKnex.js 的主要任务是简化从 JavaScript 与关系数据库(PostgreSQL、MySQL、SQLite3、MSSQL、Oracle)的交互。它承担了诸如标识符和值的转义(防止 SQL 注入)、连接池管理、数据模式迁移(创建、修改表)以及测试数据“播种”等日常任务。Knex.js 还支持事务、子查询、窗口函数、原始查询等众多功能,使其成为从小型项目到高负载系统的通用工具。
\n对于专注于实践学习的教育网站 PythonLib 来说,Knex.js 具有特殊的意义。它允许已经熟悉 SQL 基础的学生快速过渡到使用 Node.js 编写安全高效的代码。学习 Knex.js 是连接 SQL 理论与实际后端开发的绝佳桥梁。您不仅仅是在学习 ORM 魔法,而是理解每个方法如何转化为具体的 SQL 查询,这对于调试和优化至关重要。
\n2. 安装
\nKnex.js 通过 npm 包管理器安装。您还需要为您的数据库安装相应的驱动程序。
\n# 安装 Knex.js\nnpm install knex --save\n\n# 安装 PostgreSQL 驱动程序\nnpm install pg --save\n\n# 安装 MySQL / MariaDB 驱动程序\nnpm install mysql2 --save\n\n# 安装 SQLite3 驱动程序\nnpm install sqlite3 --save\n\n# 安装 MSSQL 驱动程序\nnpm install tedious --save\n\n# 安装 Oracle 驱动程序\nnpm install oracledb --save\n 重要提示: 数据库驱动程序需要单独安装。Knex.js 使用它与数据库进行直接交互。安装后,您可以全局安装 Knex CLI 以管理迁移和数据播种:npm install knex -g。
3. 快速入门 — 最小工作示例
\n创建一个 app.js 文件并连接到 SQLite 数据库(无需安装服务器)。
// 引入 Knex\nconst knex = require('knex');\n\n// SQLite 连接配置\nconst db = knex({\n client: 'sqlite3', // 数据库类型\n connection: {\n filename: './mydb.sqlite' // 数据库文件路径\n },\n useNullAsDefault: true // 推荐用于 SQLite\n});\n\n// 用于演示的异步函数\nasync function main() {\n // 1. 创建 'users' 表(如果不存在)\n await db.schema.createTableIfNotExists('users', (table) => {\n table.increments('id'); // 自增主键\n table.string('name'); // 字符串字段\n table.integer('age'); // 整数字段\n });\n\n // 2. 插入数据\n await db('users').insert({ name: 'Alice', age: 30 });\n await db('users').insert({ name: 'Bob', age: 25 });\n\n // 3. 查询所有记录\n const users = await db.select('*').from('users');\n console.log('所有用户:', users);\n\n // 4. 带条件查询