TypeORM 是一个功能丰富的 TypeScript ORM(对象关系映射)框架,它允许我们使用面向对象的方式来进行数据库操作,在多个数据库之间切换也非常方便。本篇博客将介绍如何使用 TypeORM 进行跨数据库的 ORM 开发。
安装 TypeORM
首先,我们需要在项目中安装 TypeORM。在命令行中运行以下命令来安装 TypeORM 和相应的数据库驱动:
npm install typeorm reflect-metadata mysql
其中,我们这里以 MySQL 数据库为例,如果你使用的是其他数据库,可以相应地更换数据库驱动。
配置 TypeORM
接下来,我们需要进行 TypeORM 的配置。在项目的根目录下,创建一个名为 ormconfig.json
的文件,并将以下内容复制到文件中:
{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "password",
"database": "mydatabase",
"entities": ["src/entity/**/*.ts"],
"migrations": ["src/migration/**/*.ts"],
"subscribers": ["src/subscriber/**/*.ts"],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
}
这里我们使用了 MySQL 数据库,你可以根据实际情况修改为其他数据库类型,并填入相应的数据库连接信息。
注意:
entities
配置项用于指定包含实体类的文件夹路径。migrations
配置项用于指定包含迁移文件的文件夹路径。subscribers
配置项用于指定包含订阅者类的文件夹路径。
创建实体类
接下来,我们需要创建实体类,以便对数据库进行操作。在 src/entity
目录下创建一个名为 User.ts
的文件,并将以下代码复制到文件中:
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
}
在上面的实体类中,我们使用了装饰器来定义了一个用户(User)实体,包含了 id、firstName 和 lastName 三个字段。根据实际需求,你可以自定义实体类的字段和方法。
创建数据库连接
在应用程序的入口文件(例如 index.ts
)中,我们需要创建一个数据库连接。在文件顶部引入 typeorm
和 reflect-metadata
,并添加以下代码:
import "reflect-metadata";
import {createConnection} from "typeorm";
createConnection().then(async connection => {
// 这里是应用程序的入口点
// 在这里进行数据库操作
}).catch(error => console.log(error));
当 createConnection()
被调用时,它将会读取 ormconfig.json
文件中的配置,并自动创建数据库连接。
进行数据库操作
现在,我们已经可以在应用程序中进行数据库操作了。在上面提到的 index.ts
文件中,我们可以在数据库连接成功的回调函数中进行数据库操作,例如:
import {User} from "./entity/User";
createConnection().then(async connection => {
const userRepository = connection.getRepository(User);
// 创建一个新的用户
const user = new User();
user.firstName = "John";
user.lastName = "Doe";
await userRepository.save(user);
// 查询所有用户
const users = await userRepository.find();
console.log(users);
// 更新用户信息
user.firstName = "Jane";
user.lastName = "Smith";
await userRepository.save(user);
// 删除用户
await userRepository.delete(user.id);
}).catch(error => console.log(error));
在上面的示例中,我们通过调用 connection.getRepository(User)
来获取 User 实体对应的存储库(repository),并使用该存储库进行增删改查操作。
使用不同数据库
如果你需要在多个数据库之间切换,只需简单地修改 ormconfig.json
文件中的配置即可。例如,为了使用 PostgreSQL 数据库,只需将 type
属性修改为 postgres
,同时修改连接信息为相应的 PostgreSQL 数据库的配置。
{
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "root",
"password": "password",
"database": "mydatabase",
}
结论
TypeORM 提供了强大的功能,使得跨数据库的 ORM 开发变得简单而容易。它支持多种数据库,提供了简洁的 API,可以轻松地创建实体类、数据库表以及进行数据库操作。通过合理使用 TypeORM,我们能够更高效地进行跨数据库的 ORM 开发。
本文来自极简博客,作者:糖果女孩,转载请注明原文链接:使用TypeORM进行跨数据库的ORM开发