TypeORM 是一个面向 Node.js 的 TypeScript-first ORM。它依赖 decorators 将类映射到表,并同时支持 Active Record 和 Data Mapper 两种模式。它最大的吸引力是深度的 TypeScript 集成;它最大的风险是 query 层的粗糙之处以及不均衡的维护历史。
user.save()),或者用 Data Mapper(repository.save(user))来编写可测试、解耦的代码。@Entity()
class User {
@PrimaryGeneratedColumn() id: number;
@Column({ unique: true }) email: string;
@OneToMany(() => Post, (p) => p.author) posts: Post[];
}
const users = await dataSource
.getRepository(User)
.find({ where: { email: "[email protected]" }, relations: { posts: true } });
find 选项和 QueryBuilder 只是部分有类型;错误的 column 名往往在 runtime 而非 compile 期失败。全新的 TypeScript 后端(它与 NestJS 自然搭配)、看重基于 decorator 的 model 并想要有类型 entity 的团队,以及查询大多是 CRUD、偶尔使用 QueryBuilder 的应用。
选择一个 ORM 是一项长期承诺,它塑造了每个功能触及数据库的方式。TypeORM 的 TypeScript-first 设计对有类型的代码库是实实在在的生产力优势,但面试官想听到你也了解它的局限——部分 query typing、复杂查询的痛苦,以及颠簸的发布历史——这样你才能判断何时它的人机工程学胜过其粗糙之处,而不是仅凭热度就采用它。
一个包含详细解答的 IT 面试题库——从初级到高级。
捐赠