使用 TypeORM 时如何让实体模型、数据库约束与业务类型保持一致而不过度耦合
简答题困难459 次浏览
参考答案与解析
核心结论
TypeORM 实体上的 TypeScript 类型、装饰器映射和数据库真实结构是三个相关但独立的层次。属性写成非空字符串,只影响静态检查;数据库列是否允许空值由列定义和迁移决定;从外部传入的数据是否有效则需要运行时校验。可靠设计应让这三层表达一致的约束,同时避免把持久化实体直接当作所有接口的请求模型、响应模型和领域模型,否则数据库变化会沿整个系统扩散。
底层机制与决策依据
实体装饰器在运行时收集映射元数据,仓储根据这些元数据生成查询并把结果还原为对象。由于静态类型会被擦除,数据库驱动返回的精度、时区和空值行为未必与属性标注完全一致。例如较大的整数可能无法由 JavaScript 的普通数值安全表达,小数
