🎃
TypeORMでattributeを指定して階層構造データを取得する
目的
SELECT u.id, u.name, p.name
FROM users u
INNER JOIN posts p
ON u.id = p.user_id
WHERE p.id = 1;
というsqlを発行して、JS実行時に以下のようなオブジェクトを取得したい。
{
id: 1,
name: 'Yamada Taro',
posts: [
{ name: '記事1' },
],
}
Partial Selection
import {getRepository} from "typeorm";
const user = await getRepository(User)
.createQueryBuilder('user')
.select([
'user.id',
'user.name',
'post.name',
])
.innerJoinAndSelect('posts', 'post')
.where('post.id = :id', { id: 1 })
.getOne();
によって、attributeを指定しつつ階層構造を保持したobjectを取得できる。
Discussion