使用TypeORM保存实体列表

时间:2018-10-30 12:05:36

标签: postgresql typescript typeorm

我正在使用Repository类的typeorm来处理我的Postgres数据库。

我的问题是调用feedRepository.save(feeds)时,feedRepository被声明为feedRepository: Repository<Feed>feeds的某些元素可能对插入无效。如何强制typeorm跳过无效的实体并继续插入有效的实体?

P / S:我有特殊的原因不使用for loop来一个接一个地插入数据。

1 个答案:

答案 0 :(得分:1)

您可以使用文档列表中所述的实体列表将其另存为参数,一次保存多个实体:

/**
 * Saves all given entities in the database.
 * If entities do not exist in the database then inserts, otherwise updates.
 */
save<T extends DeepPartial<Entity>>(entities: T[], options?: SaveOptions): Promise<T[]>;
/**
 * Saves a given entity in the database.
 * If entity does not exist in the database then inserts, otherwise updates.
 */
save<T extends DeepPartial<Entity>>(entity: T, options?: SaveOptions): Promise<T>;

您应该首先使用诸如class-validator https://github.com/typestack/class-validator

之类的验证工具来验证您的实体

您还可以在实体类中实现方法isValid(): boolean,该方法可用于确定数据是否正确,然后根据此功能过滤列表。

您将只花费计算时间来使用验证器检查您的实体,因此它应该相当快,比处理来自数据库或使用超调typeorm的异常要好得多。