使用TypeORM进行数据库操作-TypeORM 简介
- 支持多种数据库:支持 MySQL、PostgreSQL、SQLite、MSSQL 等多种数据库。
- 强类型支持:由于使用 TypeScript,TypeORM 提供了强类型检查,减少了运行时错误。
- 丰富的功能:支持事务、迁移、关系管理等多种高级功能。
- 社区支持:拥有活跃的社区和丰富的文档资源。
安装 TypeORM
npm install typeorm reflect-metadata
npm install @types/node typescript --save-dev
根据你使用的数据库,安装相应的驱动。例如,对于 PostgreSQL:
npm install pg
配置 TypeORM
ormconfig.json
文件。在项目根目录下创建
ormconfig.json
文件:
{
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "your_username",
"password": "your_password",
"database": "your_database",
"synchronize": true,
"logging": false,
"entities": ["src/entity/**/*.ts"],
"migrations": ["src/migration/**/*.ts"],
"subscribers": ["src/subscriber/**/*.ts"]
}
定义实体
src/entity
目录下创建一个
User.ts
文件,定义用户实体:
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
}
连接数据库
index.ts
文件,连接数据库并执行一些基本操作:
import { createConnection } from 'typeorm';
import { User } from './entity/User';
createConnection().then(async connection => {
console.log('Connected to database');
// 创建用户
const userRepository = connection.getRepository(User);
const user = new User();
user.name = 'John Doe';
user.email = 'john.doe@example.com';
await userRepository.save(user);
console.log('User saved:', user);
// 查询用户
const users = await userRepository.find();
console.log('Users:', users);
// 更新用户
user.name = 'Jane Doe';
await userRepository.save(user);
console.log('User updated:', user);
// 删除用户
await userRepository.remove(user);
console.log('User deleted:', user);
}).catch(error => console.log(error));
运行项目
npx tsc
node dist/index.js
高级功能
事务管理
await connection.transaction(async manager => {
const user = new User();
user.name = 'Alice';
user.email = 'alice@example.com';
await manager.save(user);
const post = new Post();
post.title = 'First Post';
post.content = 'This is the first post.';
post.user = user;
await manager.save(post);
});
关系管理
import { Entity, Column, PrimaryGeneratedColumn, OneToMany } from 'typeorm';
import { Post } from './Post';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
@OneToMany(type => Post, post => post.user)
posts: Post[];
}
import { Entity, Column, PrimaryGeneratedColumn, ManyToOne } from 'typeorm';
import { User } from './User';
@Entity()
export class Post {
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column()
content: string;
@ManyToOne(type => User, user => user.posts)
user: User;
}
最佳实践
使用迁移
npm install typeorm @types/node typescript --save-dev
然后,创建和运行迁移:
npx typeorm migration:create -n CreateUsersTable
npx typeorm migration:run
启用日志记录
{
"logging": true
}
优化性能
@Column({ unique: true })
email: string;
实际案例
- Web 应用:管理用户、订单和产品数据。
- API 开发:构建 RESTful API,处理数据请求。
- 数据同步:同步不同数据源的数据。
总结
TypeORM 支持多种高级功能,如事务管理、关系管理和迁移,可以显著提高数据库操作的效率和可靠性。