目录 / typeorm-relationships-schema-setups
typeorm-relationships-schema-setups
TypeORM 关系模式设置指南与说明 1. 一对一关系(One-to-One) - 使用 `@OneToOne` 装饰器定义实体之间的唯一关联。 - 可选使用 `@JoinColumn` 指定外键所在的列(通常在“拥有方”实体中)。 - 支持双向关联,需在双方实体中分别配置 `@OneToOne`,并通过 `inverseSide` 指定反向引用。 2. 一对多 / 多对一关系(One-to-Many / Many-to-One) - 使用 `@ManyToOne` 和 `@OneToMany` 装饰器建立关联。 - `@ManyToOne` 通常位于“多”的一方,并自动创建外键。 - `@OneToMany` 位于“一”的一方,需通过 `inverseSide` 指定对应的 `@ManyToOne` 字段。 - 外键由 `@ManyToOne` 侧管理,`@OneToMany` 侧不生成数据库列。 3. 多对多关系(Many-to-Many) - 使用 `@ManyToMany` 装饰器定义。 - 支持双向关联,需在至少一方使用 `@JoinTable` 指定连接表(junction table)。 - 若为双向关系,仅在一侧使用 `@JoinTable`,另一侧通过 `inverseSide` 引用。 - 可自定义连接表结构,通过 `@JoinTable` 的 `name`、`joinColumns` 和 `inverseJoinColumns` 参数配置。 4. 级联操作(Cascades) - 在关系装饰器中设置 `cascade: true` 或指定具体操作(如 `['insert', 'update', 'remove']`)。 - 启用后,对主实体的操作将自动传播到关联实体。 5. 懒加载与急加载(Lazy vs Eager Loading) - 默认使用急加载(eager),查询时自动加载关联数据。 - 设置 `lazy: true` 可启用懒加载,关联数据以 Promise 形式返回,需手动解析。 - 懒加载适用于性能优化,避免不必要的数据加载。 6. 外键约束与数据库同步 - TypeORM 默认在关系中创建外键约束,确保数据完整性。 - 使用 `synchronize: true` 时,自动根据实体定义生成或更新数据库表结构。 - 生产环境建议关闭自动同步,改用迁移(migrations)管理结构变更。 7. 关系查询与查询构建器 - 使用 `find` 方法的 `relations` 选项加载关联实体。 - 使用 QueryBuilder 的 `leftJoinAndSelect`、`innerJoinAndSelect` 等方法实现复杂关联查询。 - 支持嵌套关系加载,如 `relations: ['user', 'user.profile']`。 8. 最佳实践 - 明确区分“拥有方”与“反向方”,避免循环依赖。 - 合理选择级联策略,防止意外数据修改或删除。 - 对大数据量关联使用懒加载或分页查询,提升性能。 - 使用迁移文件管理关系结构变更,确保版本一致性。 遵循以上指南,可高效、安全地配置 TypeORM 实体关系,构建健壮的数据模型。
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。
存档时间线
| 版本 | 存档时间 | 内容哈希 | 内容 |
|---|---|---|---|
| v1 | 2026-11-14 07:17 | ece73f0e | 可取 |
版本索引永久保留;内容副本只保留最新 1 份,更早版本仅留索引与哈希(存档时间线的证据链不会因此断裂)。
提交举报 / 纠错
侵权举报经核验成立后,我们会即时下线该条目并删除已存的内容副本。