Size: a a a

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

2021 August 26

EN

Edvart Nonsn in TypeORM - Русскоязычное сообщество
Увидел
источник
2021 August 28

ВС

Вячеслав Салоид... in TypeORM - Русскоязычное сообщество
Всем привет

Подскажите, пожалуйста

Можно ли проверить, relation ли поле Entity или просто объект ?
источник

x

xzdwq in TypeORM - Русскоязычное сообщество
продскажите как переписать данный запрос на querybuilder с сохранением skip, take (обычная пагинация):
const [data, total] = await this.docRepository.findAndCount({
 relations: ['user', 'user.project'],
 skip: limit * (page - 1),
 take: limit,
 order: {
   create_at: 'DESC'
 }
})

далее появилась необходимость сделать orderBy в relations и т.к. в find это нельзя пришлось переписать на querybuilder:
const data = await this.docRepository
 .createQueryBuilder('doc')
 .leftJoinAndSelect('doc.user', 'user')
 .leftJoinAndSelect('user.project', 'project')
 .orderBy({
   'doc.create_at': 'DESC',
   'project.create_at': 'DESC'
 })
 .limit(limit * (page - 1))
 .offset(limit)
 .getMany()

так запрос с limit и offset генерирует что-то не то, как правильно их использовать в querybuilder? (БД MS SQL, возможно есть какие-то особенности для нее)
источник

x

xzdwq in TypeORM - Русскоязычное сообщество
в общем я понял в чем проблема, в целом пагинация с join`ами доставляет проблем, кто как реализовывает пагинацию?
источник
2021 August 29

MV

Mikhail Vasiliev in TypeORM - Русскоязычное сообщество
Я вот так делаю
.skip((pageIndex - 1) * pageSize)
.take(pageSize)
источник

MV

Mikhail Vasiliev in TypeORM - Русскоязычное сообщество
Ну и приведение к типу + проверка

pageIndex = Number(pageIndex);
pageIndex = Number(pageIndex < 1 ? 1 : pageIndex);
pageSize = Number(pageSize);
источник

x

xzdwq in TypeORM - Русскоязычное сообщество
это да, так работает если нет leftJoinAndSelect в запросе, с ним же все наперекосяк. если с find typeorm сначала собирает все relations в результирующий набор, а уже потом применяет skip и take, то querybuilder обрезает сразу, т.е. если в join должно придти 50 строк он их тоже обрежет, ну это впринципе и логично
источник
2021 August 30

ВС

Вячеслав Салоид... in TypeORM - Русскоязычное сообщество
Всем привет

Подскажите, пожалуйста

Можно ли при помощи Typeorm отправить запрос на поиск внутри relation -> json

Если поиск просто внутри json - использую Raw с JSON_EXTRACT

А как сделать это с relation - непонятно

P.S. Понимаю, что можно написать просто через query - интерестуют возможности Typeorm
источник

К

Константин in TypeORM - Русскоязычное сообщество
***ая магия:
Вдруг кому надо, и он тоже как и я об этом не знал – полнотекстовый поиск по нужным столбцам:
async findAll(search) {
 const query = search.query.trim().replace(/ /g, ' & ')
 return this.carRepository
   .createQueryBuilder('car')
   .where(
     `to_tsvector('simple', car.Make || ' ' || car.Model) @@ to_tsquery('simple', :query)`,
     { query: `${query}:*` }
   )
   .getMany()
}
источник

К

Константин in TypeORM - Русскоязычное сообщество
Ах да: postgresql
источник
2021 August 31

К

Константин in TypeORM - Русскоязычное сообщество
Ребзя, помогите пожалуйста. Мне нужно сохранить массив кортежей из другой сущности:
@ManyToMany(() => Car, { eager: true })
@JoinTable()
cars: Car[]

в createProductDto передаю массив айдишников этих кортежей:
ca
rs: [1, 2, 3]

Но они не сохраняются почему-то:
{
        "id": 8,
       "title": "Some engine",
       "createDate": "2021-08-31T07:38:07.845Z",
       "cars": [],
       "stocks": [],
       "supplies": []
   }

Что я делаю не так?
источник
2021 September 01

MV

Mikhail Vasiliev in TypeORM - Русскоязычное сообщество
Здравствуйте!
Есть query, в нем
.orderBy(`accounts.number`, sortByOrder);

accounts -- relations, в котором есть поле typeof number === number

Когда в конце делаю getMany, то получаю первых 10 юзеров из БД, у которых отсортированы аккаунты

Мне нужно наоброт, чтобы смотрело сперва на relation, сортировало, и выдывало юзеров после сортировки

Можно это как-то сделать через queryBuilder?
источник

АБ

Алексей Бабыкин... in TypeORM - Русскоязычное сообщество
то есть если связи нету они в конец падали? не очень понял вопрос попробуйте orderBy('accounts.number', 'DESC','NULLS LAST') возможно решит проблему
источник

АБ

Алексей Бабыкин... in TypeORM - Русскоязычное сообщество
потому что нужно кидать не массив чисел а массив сущностей  сделайте так cars: [1, 2, 3].map(i=> ({id:i})) и можно сохранять
источник
2021 September 02

RY

Rustem Yuzlibaev in TypeORM - Русскоязычное сообщество
Когда создается Many-to-One через typeorm можно видеть в postgres соответствующие REFERENCES на другую таблицу при ее создании

При Many-to-many по сути должна создаться отдельная таблица в postgres, но ее нету

TypeOrm  использует ее только у себя или она все таки должна создаться в БД?
источник

RY

Rustem Yuzlibaev in TypeORM - Русскоязычное сообщество
Оказывается надо было добавить @JoinTable()
источник

К

Константин in TypeORM - Русскоязычное сообщество
Ребята, вопрос:
Есть связь один к одному Товар - Цена
@OneToOne(() => ProductPrice, { eager: true, cascade: true })
@JoinColumn()
price: ProductPrice


и:
@Entity()
export class ProductPrice {
 @PrimaryGeneratedColumn()
 id: number

 @Column({ type: 'numeric' })
 retailPrice: number

 @Column({ type: 'numeric' })
 fixedPrice: number

 @OneToOne(() => Product, (product: Product) => product.price)
 product: Product
}

Разве при такой связи и настройках цена не должна автоматически сохраняться и удаляться?

При создании товара передаю объект с ценой:

"price": {
       "retailPrice": 123,
       "fixedPrice": 123
   }

Я д
умал что этого достаточно чтобы при сохранении товара цена сохранялась автоматически с привязкой к этому товару, а оно не работает…
источник

К

Константин in TypeORM - Русскоязычное сообщество
ну я так сделал:
const cars = await this.carService.getByIds(createProductDto.cars)
const product = await queryRunner.manager.save(Product, {
 ...createProductDto,
 cars: cars
})
источник

RY

Rustem Yuzlibaev in TypeORM - Русскоязычное сообщество
тоже сегодня на этой задаче застрял когда реализовывал Many-to-Many. Необходимо конкртетно сущности кидать, TypeORM не понимает что это за строки
источник

RY

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