Nest JS + TypeORM отношения одного столбца в массиве - PullRequest
0 голосов
/ 13 июля 2020

У меня есть отношение «многие ко многим» Post <-> Tag, и я хотел бы создать список сообщений. Каждый пост должен содержать список своих тегов-слагов. Но этот список должен быть такого типа: string []

Вот мои объекты

@Entity()
export class Post {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    @IsDefined()
    title: string;

    @Column()
    @IsDefined()
    text: string;

    @Column()
    slug: string;

    @ManyToMany(type => Tag)
    @JoinTable()
    tags: Tag[];
}
@Entity()
export class Tag {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;

    @Column()
    slug: string;

}

Код в моем сервисе

this.postsRepository.createQueryBuilder("post")
      .select(["post.slug", "post.title", "tags.slug"])
      .leftJoin("post.tags", "tags")
      .getMany()

Результат У меня есть

[{
    "title": "Post 1",
    "slug": "post-1",
    "tags": [{
        "slug": "tag-1"
    }]
}, {
    "title": "Post-2",
    "slug": "post-2",
    "tags": [{
        "slug": "tag-1"
    }, {
        "slug": "tag-2"
    }]
}]

Результат Я хочу

[{
    "title": "Post 1",
    "slug": "post-1",
    "tags": ["tag-1"]
}, {
    "title": "Post-2",
    "slug": "post-2",
    "tags": ["tag-1", "tag-2"]
}]

Возможно ли это? На самом деле я хотел бы сделать то же самое, что и loadRelationIds

this.postsRepository.find({ select: ["slug", "title"], loadRelationIds: true })

, но с моими слагами.

...