• 入门
    入门 - 图1 入门 - 图2 入门 - 图3 入门 - 图4 入门 - 图5

    TypeORM 是一个ORM框架,它可以运行在 NodeJS、Browser、Cordova、PhoneGap、Ionic、React Native、Expo 和 Electron 平台上,可以与 TypeScript 和 JavaScript (ES5,ES6,ES7,ES8)一起使用。 它的目标是始终支持最新的 JavaScript 特性并提供额外的特性以帮助你开发任何使用数据库的(不管是只有几张表的小型应用还是拥有多数据库的大型企业应用)应用程序。

    不同于现有的所有其他 JavaScript ORM 框架,TypeORM 支持 Active Record 和 Data Mapper 模式,这意味着你可以以最高效的方式编写高质量的、松耦合的、可扩展的、可维护的应用程序。

    TypeORM 参考了很多其他优秀 ORM 的实现, 比如 Hibernate, Doctrine 和 Entity Framework。

    TypeORM 的一些特性:

    • 支持 DataMapper 和 ActiveRecord (随你选择)
    • 实体和列
    • 数据库特性列类型
    • 实体管理
    • 存储库和自定义存储库
    • 清晰的对象关系模型
    • 关联(关系)
    • 贪婪和延迟关系
    • 单向的,双向的和自引用的关系
    • 支持多重继承模式
    • 级联
    • 索引
    • 事务
    • 迁移和自动迁移
    • 连接池
    • 主从复制
    • 使用多个数据库连接
    • 使用多个数据库类型
    • 跨数据库和跨模式查询
    • 优雅的语法,灵活而强大的 QueryBuilder
    • 左联接和内联接
    • 使用联查查询的适当分页
    • 查询缓存
    • 原始结果流
    • 日志
    • 监听者和订阅者(钩子)
    • 支持闭包表模式
    • 在模型或者分离的配置文件中声明模式
    • json / xml / yml / env 格式的连接配置
    • 支持 MySQL / MariaDB / Postgres / SQLite / Microsoft SQL Server / Oracle / sql.js
    • 支持 MongoDB NoSQL 数据库
    • 可在 NodeJS / 浏览器 / Ionic / Cordova / React Native / Expo / Electron 平台上使用
    • 支持 TypeScript 和 JavaScript
    • 生成高性能、灵活、清晰和可维护的代码
    • 遵循所有可能的最佳实践
    • 命令行工具

    还有更多…

    通过使用 TypeORM 你的 models 看起来像这样:

    1. import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
    2. @Entity()
    3. export class User {
    4. @PrimaryGeneratedColumn()
    5. id: number;
    6. @Column()
    7. firstName: string;
    8. @Column()
    9. lastName: string;
    10. @Column()
    11. age: number;
    12. }

    逻辑操作就像是这样:

    1. const user = new User();
    2. user.firstName = "Timber";
    3. user.lastName = "Saw";
    4. user.age = 25;
    5. await repository.save(user);
    6. const allUsers = await repository.find();
    7. const firstUser = await repository.findOne(1); // find by id
    8. const timber = await repository.findOne({ firstName: "Timber", lastName: "Saw" });
    9. await repository.remove(timber);

    或者,如果你更喜欢使用ActiveRecord实现,也可以这样用:

    1. import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
    2. @Entity()
    3. export class User extends BaseEntity {
    4. @PrimaryGeneratedColumn()
    5. id: number;
    6. @Column()
    7. firstName: string;
    8. @Column()
    9. lastName: string;
    10. @Column()
    11. age: number;
    12. }

    逻辑操作如下所示:

    1. const user = new User();
    2. user.firstName = "Timber";
    3. user.lastName = "Saw";
    4. user.age = 25;
    5. await user.save();
    6. const allUsers = await User.find();
    7. const firstUser = await User.findOne(1);
    8. const timber = await User.findOne({ firstName: "Timber", lastName: "Saw" });
    9. await timber.remove();

    入门