Size: a a a

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

2020 March 02

KA

Kylych Asankulov in TypeORM - Русскоязычное сообщество
Kylych Asankulov
Короче говоря у меня айдишник типа uuid. Когда пытаюсь
findOne(
{where: {id: is} }
)

то ругается что не может сделать запрос
мой косяк был. пофиксил. спасибо)
источник
2020 March 03

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
Добрый день! Подскажите, пожалуйста, из-за чего может быть следующая проблема:

Есть приложение на Nest, в одном из модулей создается сущность с PrimaryGeneratedColumn, UpdatedColumn, CreatedColumn для неё вызывается save, в обычных условиях всё работает отлично, вопросов нет.

Но если я поднимаю тоже самое приложение через Jest, то при вызове save() для такой же записи значения помеченных колонок не возвращаются в объект. При этом insert строится такой же, с return, запись в БД появляется.
источник

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
Немного дебага привели к следующему:  в коде typeorm есть такой кусок, generateMaps и identifiers в случае Jest остаются пустыми.
источник

YZ

Yaroslav Zhymkov in TypeORM - Русскоязычное сообщество
Юрий Косяков
Немного дебага привели к следующему:  в коде typeorm есть такой кусок, generateMaps и identifiers в случае Jest остаются пустыми.
может в транзакциях, попробуйте их офнуть
источник

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
Yaroslav Zhymkov
может в транзакциях, попробуйте их офнуть
не помогло, попробовал obj.save({transaction: false})
источник

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
Yaroslav Zhymkov
может в транзакциях, попробуйте их офнуть
Я нашёл причину: к сожалению или к счастью она не связана с конфигами.

В typeorm есть ReturningResultsEntityUpdator.ts, в котором есть такой код:

if (this.queryRunner.connection.driver instanceof OracleDriver && insertResult.raw instanceof Array && this.expressionMap.extraReturningColumns.length > 0) {
               insertResult.raw = insertResult.raw.reduce((newRaw, rawItem, rawItemIndex) => {
                   newRaw[this.expressionMap.extraReturningColumns[rawItemIndex].databaseName] = rawItem[0];
                   return newRaw;
               }, {} as ObjectLiteral);
           }
     
Код отрабатывает только для БД oracle и преобразует возвращаемые результаты в подходящий вид (по аналогии с другими БД).

Непосредственно проблема заключается в том, что в Jest context глобальный объект Array заменяется на что-то другое и instanceof Array возвращает false, хотя должен true.

В jest на это заведен баг https://github.com/facebook/jest/issues/2549, который судя по всему ещё и завязан на поведение vm https://github.com/nodejs/node-v0.x-archive/issues/1277.

Замена insertResult.raw instanceof Array на Array.isArray(insertResult.raw) помогает, но таких мест как минимум 4.
источник

UK

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

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
круто, а можно ещё добавить изменения в файле ReturningResultsEntityUpdator.ts?
источник

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
в методах insert и update
источник

UK

Umed Khudoiberdiev in TypeORM - Русскоязычное сообщество
это уже было кем то сделано до этого
источник

UK

Umed Khudoiberdiev in TypeORM - Русскоязычное сообщество
рекоммендую обновить версию ормки
источник

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
понятно, спасибо
источник
2020 March 05

J

Joel in TypeORM - Русскоязычное сообщество
Знаете ли вы, как загрузить все отношения сущности?
источник

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
Joel
Знаете ли вы, как загрузить все отношения сущности?
Указать всем отношениям eager: true, либо entityRepository.find({relations:['relation1', 'relation2', ...]}), либо с использованием query builder
источник

J

Joel in TypeORM - Русскоязычное сообщество
Юрий Косяков
Указать всем отношениям eager: true, либо entityRepository.find({relations:['relation1', 'relation2', ...]}), либо с использованием query builder
но я не хочу указывать отношения, я хочу, чтобы вы привели их все без указания названия каждого
источник

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
https://typeorm.io/#/eager-and-lazy-relations тогда может всё-таки eager?
источник

J

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

ЮК

Юрий Косяков in TypeORM - Русскоязычное сообщество
тогда видимо никак, может ошибаюсь
источник
2020 March 11

P

Pavel in TypeORM - Русскоязычное сообщество
поддерживает ли ORM get set для свойств?
источник

YZ

Yaroslav Zhymkov in TypeORM - Русскоязычное сообщество
да, в доке есть пример
источник