Knex.js 用于 JavaScript (Node.js):完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程
\n

Knex.js 用于 JavaScript (Node.js):完整指南及示例

\n\n
\n

1. 什么是 Knex.js 以及为什么需要它

\n

Knex.js 是一个强大、灵活且高性能的 Node.js SQL 查询构建器。与 Sequelize 或 TypeORM 等 ORM(对象关系映射)库不同,Knex.js 并不试图将您完全从 SQL 中抽象出来。相反,它提供了一个方便、可链式调用的 API 来以编程方式构建 SQL 查询,同时保留对最终 SQL 的完全控制。这使得 Knex.js 成为那些注重性能、查询透明度和灵活性,同时又希望避免编写原始 SQL 字符串(存在语法错误和 SQL 注入风险)的项目的理想选择。

\n

Knex.js 的主要任务是简化从 JavaScript 与关系数据库(PostgreSQL、MySQL、SQLite3、MSSQL、Oracle)的交互。它承担了诸如标识符和值的转义(防止 SQL 注入)、连接池管理、数据模式迁移(创建、修改表)以及测试数据“播种”等日常任务。Knex.js 还支持事务、子查询、窗口函数、原始查询等众多功能,使其成为从小型项目到高负载系统的通用工具。

\n

对于专注于实践学习的教育网站 PythonLib 来说,Knex.js 具有特殊的意义。它允许已经熟悉 SQL 基础的学生快速过渡到使用 Node.js 编写安全高效的代码。学习 Knex.js 是连接 SQL 理论与实际后端开发的绝佳桥梁。您不仅仅是在学习 ORM 魔法,而是理解每个方法如何转化为具体的 SQL 查询,这对于调试和优化至关重要。

\n
\n\n
\n

2. 安装

\n

Knex.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。

\n
\n\n
\n

3. 快速入门 — 最小工作示例

\n

创建一个 app.js 文件并连接到 SQLite 数据库(无需安装服务器)。

\n
// 引入 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. 带条件查询                    

推荐