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

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

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

开始课程
\n

TypeORM 用于 JavaScript (Node.js):完整指南

\n\n
\n

1. 什么是 TypeORM 以及为什么需要它

\n

\n TypeORM 是一个强大的对象关系映射(ORM)库,专为在 Node.js 环境中处理数据库而设计。它同时支持 TypeScript 和 JavaScript,为开发者提供了一种通过面向对象的方式与关系型数据库(PostgreSQL、MySQL、MariaDB、SQLite、Microsoft SQL Server、Oracle 和 CockroachDB)进行交互的便捷方法。无需编写原始 SQL 查询,您可以直接操作实体(Entity)——这些是普通的 JavaScript 类,会自动映射到数据库表。\n

\n

\n 为什么需要 TypeORM?首先,它能显著加快开发速度:您无需手动编写 CRUD 操作(创建、读取、更新、删除)的 SQL 查询。其次,它通过使用参数化查询提供了类型安全(如果您使用 TypeScript)并防止 SQL 注入。第三,TypeORM 为复杂查询提供了强大的查询构建器(Query Builder),用于管理数据库模式的迁移,并支持表之间的关系(一对一、一对多、多对多)。这使其成为构建可扩展且易于维护的应用程序的理想选择。\n

\n

\n 与其他一些 ORM 不同,TypeORM 积极使用装饰器(在 TypeScript 中)或注解(在 JavaScript 中通过实验性功能),使代码声明式且直观。该库还支持 Active Record 和 Data Mapper 模式,允许开发者选择最适合自己的工作风格。凭借其灵活性和丰富的功能,TypeORM 是 Node.js 生态系统中最流行的 ORM 之一。\n

\n
\n\n
\n

2. 安装

\n

\n 要将 TypeORM 安装到您的 Node.js 项目中,请使用 npm 包管理器。您还需要为您的数据库安装相应的驱动程序。以下是针对最流行数据库管理系统的命令。\n

\n
# 安装 TypeORM\nnpm install typeorm --save\n\n# 安装 PostgreSQL 驱动程序\nnpm install pg --save\n\n# 安装 MySQL / MariaDB 驱动程序\nnpm install mysql2 --save\n\n# 安装 SQLite 驱动程序\nnpm install sqlite3 --save\n\n# 安装 Microsoft SQL Server 驱动程序\nnpm install mssql --save\n\n# 安装 CockroachDB 驱动程序\nnpm install pg --save\n\n# 对于 TypeScript,还需安装 reflect-metadata 和类型定义\nnpm install reflect-metadata --save\nnpm install @types/node --save-dev
\n

\n 安装后,请确保在您的 tsconfig.json(如果您使用 TypeScript)中启用了以下设置:\n

\n
{\n  "emitDecoratorMetadata": true,\n  "experimentalDecorators": true\n}
\n

\n 对于 JavaScript (Node.js),这些设置不是必需的,但如果您愿意,可以使用实验性装饰器。\n

\n
\n\n
\n

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

\n

\n 让我们创建一个简单的应用程序,连接到 SQLite 数据库(文件型数据库,无需安装服务器)并执行基本操作。\n

\n

\n 创建文件 index.js 并添加以下代码:\n

\n
const { createConnection, EntitySchema } = require("typeorm");\n\n// 通过 EntitySchema 定义实体\nconst UserSchema = new EntitySchema({\n    name: "User",\n    tableName: "users",\n    columns: {\n        id: {\n            primary: true,\n            type: "int",\n            generated: true\n        },\n        firstName: {\n                    

推荐