且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

TypeORM:将不相关的实体映射到数组属性

更新时间:2021-11-25 22:54:17

我认为使用TypeORM本身不可能做到这一点,但是您可以通过以下方式使用map()函数来实现:

const categories: string[] = query.execute().map((book) => book.category_name );
const book = {id: bookArray[0].book_id, name: bookArray[0].book_name, categories};

//OUTPUT: 
{
  id: 1,
  name: 'Lorem Ipsum',
  categories: [ 'non-fiction', 'documentary' ]
}

这不是干净利落的做法,但由于您是按ID请求一本书,因此您将确保book_idbook_name属性在每个数组对象中始终相同。

TypeORM还建议使用getMany()getOne()而不是执行查询:

const books: Book[] = await this.bookRepository
  .createQueryBuilder('book')
  .leftJoinAndSelect(BookCategory, 'category', 'book.id = category.bookId')
  .getMany();