我正在使用Repository
类的typeorm来处理我的Postgres数据库。
我的问题是调用feedRepository.save(feeds)
时,feedRepository
被声明为feedRepository: Repository<Feed>
,feeds
的某些元素可能对插入无效。如何强制typeorm跳过无效的实体并继续插入有效的实体?
P / S:我有特殊的原因不使用for loop
来一个接一个地插入数据。
答案 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的异常要好得多。