Size: a a a

TypeORM - Русскоязычное сообщество

2019 July 22

BK

Bogdan Korenkov in TypeORM - Русскоязычное сообщество
Добрый день! Как seeds лучше всего делать? У меня синхронизация отключена, через миграции все делаю
источник

RA

Robert Arzin in TypeORM - Русскоязычное сообщество
Vladyslav Siroshtan
Всем привет.
Есть ли какая-то возможность получить из ошибки поле "column" с валидными данными (оно всегда undefined) ?
Хотелось бы красивые ошибкки клиенту отдать)
Если проблемы внутри системы, то эту ошибку никогда нельзя наружу выдавать
источник

RA

Robert Arzin in TypeORM - Русскоязычное сообщество
Так же не рекомендую писать, что проблемы с базой или самим орм
источник

VS

Vladyslav Siroshtan in TypeORM - Русскоязычное сообщество
@mrfoe7 это я знаю, я и не собирался выдавать тайны 😊 Всё должно было быть отформатировано, и клиент получал бы только то, что ему можно и нужно видеть.
источник
2019 July 23

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
Vladyslav Siroshtan
@constb
У меня в текущем запросе может быть не одна ошибка, я хотел все ошибки из бд собрать в одном месте для форматирования и отправки на клиент.
Допустим у меня в том же запросе есть еще и такая ошибка:
insert or update on table "user" violates foreign key constraint "FK_974590e8d8d4ceb64e30c38e051"

При этом мне нужно сделать запрос на проверку нету ли такого email и проверку если ли id для связи в другой таблице.

По этому поводу есть несколько вопросов:
1. В итоге перед инсертом сделать 2 запроса в бд(ради валидации) - это нормальная практика ?
2. Доводить orm до выбрасывания exception - плохая практика ?
Именую все индексы и фк, пк нормально, и есть список оссоциаций и при получении ошибки из бд маплю посписку и выдаю фронту

Это там где лучше не делать доп запросов, данных когда очень много
источник

VS

Vladyslav Siroshtan in TypeORM - Русскоязычное сообщество
ILshat Khamitov
Именую все индексы и фк, пк нормально, и есть список оссоциаций и при получении ошибки из бд маплю посписку и выдаю фронту

Это там где лучше не делать доп запросов, данных когда очень много
Интересно, спасибо, попробую.
источник

VS

Vladyslav Siroshtan in TypeORM - Русскоязычное сообщество
А можно как-то имя задать для индекса FK из сущности ?
По-типу в ManyToOne указать как индекс fk будет называться.
Или только руками писать в миграции ?
источник

VS

Vladyslav Siroshtan in TypeORM - Русскоязычное сообщество
Vladyslav Siroshtan
А можно как-то имя задать для индекса FK из сущности ?
По-типу в ManyToOne указать как индекс fk будет называться.
Или только руками писать в миграции ?
Вопрос снимается, всем спасибо.
Нашел решение, можно создать свою кастомную стратегию именования.
источник

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
Скинь линк, может ещё кому пригодится
источник

АП

Алексей Пастушенко in TypeORM - Русскоязычное сообщество
Vladyslav Siroshtan
А можно как-то имя задать для индекса FK из сущности ?
По-типу в ManyToOne указать как индекс fk будет называться.
Или только руками писать в миграции ?
там вроде же как прям в декораторе можно указать
источник

K

Kolpakov in TypeORM - Русскоязычное сообщество
ну да
источник

K

Kolpakov in TypeORM - Русскоязычное сообщество
export declare function Index(name: string, fields: string[], options?: IndexOptions): Function;
источник

VS

Vladyslav Siroshtan in TypeORM - Русскоязычное сообщество
ILshat Khamitov
Скинь линк, может ещё кому пригодится
там как таковой документации нету, я исходники смотрел.

Тут показано как подключать кастомную стратегию именования https://github.com/typeorm/typeorm/blob/master/docs/naming-strategy.md

А вот тут пример https://github.com/typeorm/typeorm/blob/master/sample/sample12-custom-naming-strategy/naming-strategy/CustomNamingStrategy.ts
источник

VS

Vladyslav Siroshtan in TypeORM - Русскоязычное сообщество
Kolpakov
ну да
Так ManyToOne(и подобные) сами себе создают же индексы, я просто переопределю именование их и не буду каждый раз лишнее писать.
источник
2019 July 24

LK

L K in TypeORM - Русскоязычное сообщество
всем привет
есть такой query
let qb = this.jobRepository.createQueryBuilder('jobs');
qb = qb.leftJoinAndSelect(`jobs.spheres`, 'spheres');
qb = qb.offset(skip).limit(perPage);
const [results, count] = await qb.getManyAndCount();
должно прийти 25 записей
но приходит 5, только потому что я добавил qb = qb.leftJoinAndSelect(`jobs.spheres, 'spheres');`

speheres это many to many, у джобы много тегов, у тега много джоб

как только я убираю загрузку spheres, то мне возвращается 25 записей
сам запрос который typeorm генерит, проверил в базе и он возвращает 25 записей по distinct

вопрос: куда деваются остальные джобы ?
я так понял это какой-то внутренний мапинг typeorm, хотя там же не стоит innerJoinAndSelect, а  leftJoinAndSelect
источник

LK

L K in TypeORM - Русскоязычное сообщество
вообщем эта дичь работает как innerJoinAndSelect
ибо возвращается тоже к-во записей
источник

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
Запрос глянь который формируется
источник

LK

L K in TypeORM - Русскоязычное сообщество
ILshat Khamitov
Запрос глянь который формируется
запрос норм

тут вот в чем дело
/**
   * Set's LIMIT - maximum number of rows to be selected.
   * NOTE that it may not work as you expect if you are using joins.
   * If you want to implement pagination, and you are having join in your query,
   * then use instead take method instead.
   */
  limit(limit?: number): this;


  /**
   * Sets maximal number of entities to take.
   */
  take(take?: number): this;
работает, но типа стремно это все
источник

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
В запросе лефт джойн?
источник

LK

L K in TypeORM - Русскоязычное сообщество
да
источник