使用TypeORM批量插入数组时返回的ID顺序是否与插入顺序一致?
结论
TypeORM 批量插入返回的 ID 顺序和你传入的数组顺序完全一致,可以直接按索引对应使用。
逻辑说明
- TypeORM 内部在处理批量插入时会保留传入数组的顺序,执行 INSERT 操作后,会按照插入顺序把生成的自增 ID 填充到返回结果的
identifiers数组中,和传入参数的索引一一对应。 - 该逻辑对 MySQL、PostgreSQL 等所有支持自增主键的数据库都生效,顺序对齐是 TypeORM 层面统一处理的,和底层数据库执行逻辑无关。
代码验证
你可以打印返回结果的 identifiers 字段确认对应关系,针对你给出的示例:
const result = await repository.insertArr(arr); // 输出的identifiers顺序和arr顺序完全对应 console.log(result.identifiers); // 输出结果示例:[{id: 1}, {id: 2}],对应arr[0]是first、arr[1]是second
注意事项
- 只有当你的表主键是用
@PrimaryGeneratedColumn修饰的自增主键时,返回的identifiers才会携带生成的 ID 值。 - 如果你使用自定义主键生成规则而非自增主键,需要自行确认生成逻辑是否会影响顺序对应关系。
内容的提问来源于stack exchange,提问作者InnerPeace
相关产品推荐
相关产品推荐

