Сохранение списка сущностей с использованием TypeORM - PullRequest
0 голосов
/ 30 октября 2018

Я использую Repository класс typeorm для работы с моей базой данных Postgres.

Моя проблема заключается в том, что при вызове feedRepository.save(feeds) с feedRepository, объявленным как feedRepository: Repository<Feed>, некоторые элементы feeds могут быть недопустимыми для вставки. Как заставить typeorm пропускать недействительные сущности и продолжать вставлять действительные?

P / S: У меня есть особые причины не использовать for loop для вставки данных один за другим.

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете сохранить несколько объектов одновременно, используя список объектов для сохранения в качестве параметра в хранилище, как описано в документе:

/**
 * 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.

...