Size: a a a

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

2019 August 15

LK

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

LK

L K in TypeORM - Русскоязычное сообщество
а так не выйдет сделать с typeorm, addSelect попадает внутрь subquery
источник
2019 August 28

O

Oleh in TypeORM - Русскоязычное сообщество
привет, хелп
есть таблица users(id, roleId), roles
какой самый правильный способ обновить связь роли юзера?

я нашел user.role = { id: 1 }
но проблема в том, что мне приходит как roleId и писать обертку, которая б конвертила roleId в { id } не хочется. При то что если сохранить как user.roleId = 1, то не обновит
источник

IK

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

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
Фронт не должен знать о поле roleId
источник

O

Oleh in TypeORM - Русскоязычное сообщество
ILshat Khamitov
Фронт не должен знать о поле roleId
понял, спасибо

то есть в идеале сделать так, чтобы мне приходило ?
user
{
 role: { id: 1 }
}
UPD: я не понял почему фронт не должен знать от roleId
источник
2019 August 29

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
Отсылай сущности на фронт, на фронте тоже сейчас модели юзают и интерфейсы и оно все мапаются как и на беке, у тя и в бэке нигде userId не юзается, этоже орм, все запросы объектные, вот если сырой sql там да такое поле бушь юзать
источник

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
Oleh
понял, спасибо

то есть в идеале сделать так, чтобы мне приходило ?
user
{
 role: { id: 1 }
}
UPD: я не понял почему фронт не должен знать от roleId
Мне прилетает
{id:1,title:'название поста',user:1}

Класс трансформ сериализует это дто в
{id:1,title:'название поста',user:{id:1}}
источник

O

Oleh in TypeORM - Русскоязычное сообщество
class transformer ? я просто не могу найти как перевести, напр.
{ name: 'oleh', role: 1, schedule: 2 }
user {
name: string
role: Role;
schedule: Schedule
}

спасибо
источник

BK

Bogdan Korenkov in TypeORM - Русскоязычное сообщество
Oleh
привет, хелп
есть таблица users(id, roleId), roles
какой самый правильный способ обновить связь роли юзера?

я нашел user.role = { id: 1 }
но проблема в том, что мне приходит как roleId и писать обертку, которая б конвертила roleId в { id } не хочется. При то что если сохранить как user.roleId = 1, то не обновит
https://github.com/typeorm/typeorm/issues/447#issuecomment-298896602
источник

BK

Bogdan Korenkov in TypeORM - Русскоязычное сообщество
не про это?
источник

O

Oleh in TypeORM - Русскоязычное сообщество
Bogdan Korenkov
https://github.com/typeorm/typeorm/issues/447#issuecomment-298896602
в целом норм вариант. тогда уже буду думать как лучше
всем спасибо
источник

BK

Bogdan Korenkov in TypeORM - Русскоязычное сообщество
а что может быть лучше, это как и должно быть?
источник

O

Oleh in TypeORM - Русскоязычное сообщество
Bogdan Korenkov
а что может быть лучше, это как и должно быть?
просто ж был вариант через класс трансформер.
из вариантов это ж user.role = { 1 }, user.roleId = 1 (то что ты скинул) или user.role = 1 => user.role = { 1 }

просто для каждой сущности придется также еще один Column рассписывать (roleId, role)
источник

O

Oleh in TypeORM - Русскоязычное сообщество
ILshat Khamitov
Мне прилетает
{id:1,title:'название поста',user:1}

Класс трансформ сериализует это дто в
{id:1,title:'название поста',user:{id:1}}
нашел способ, еще так можно сделать
@ManyToOne(() => Role, { onDelete: 'SET NULL', onUpdate: 'CASCADE' })
role: Role | number;

а потом сохранять одним из 2х способов
// role: { id: 3 },
   role: 3,

UPD: костыль, тк при выгрузке придется делать проверку на число
источник

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
Oleh
нашел способ, еще так можно сделать
@ManyToOne(() => Role, { onDelete: 'SET NULL', onUpdate: 'CASCADE' })
role: Role | number;

а потом сохранять одним из 2х способов
// role: { id: 3 },
   role: 3,

UPD: костыль, тк при выгрузке придется делать проверку на число
источник

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
консоль лог глянь
источник
2019 September 06

LK

L K in TypeORM - Русскоязычное сообщество
let candidatesQuery = this.candidateRepository.createQueryBuilder('candidates');
       candidatesQuery = candidatesQuery.leftJoinAndSelect(`candidates.employeeInfo`, 'employeeInfo');
       const {
           perPage = DEFAULT_PER_PAGE,
           page = DEFAULT_PAGE,
       } = pagination;
       const skip = (perPage * page) - perPage;
       candidatesQuery = candidatesQuery.skip(skip)
           .take(perPage);

       const { entities, raw } = await candidatesQuery.getRawAndEntities();
вообщем создает 2 запроса
первый который оборачивается в алиас distinctAlias и у него есть LIMIT 25
а потом еще второй запрос но уже без лимита
и приходят мне все записи в ответе

если удалить эту связь candidatesQuery = candidatesQuery.leftJoinAndSelect(`candidates.employeeInfo, 'employeeInfo');`
то работает нормально, выполняется 1 запрос и отдается 25 записей

что за дичь в typeorm ?
источник

IK

ILshat Khamitov in TypeORM - Русскоязычное сообщество
второй на коунт
источник

IK

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