В моем приложении я хочу, чтобы у пользователя были элементы уведомлений (новости) другого типа. User
и NewsItem
должны иметь отношение один ко многим, но также, NewsItem
- это просто базовый класс для различных типов фактических новостей.
Вот мой базовый NewsItem
класс:
@Entity()
@TableInheritance({ column: { type: "varchar", name: "type"}})
export class NewsItem {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(type => User, user => user.news)
receiver: Promise<User>;
}
Вот User
, к которому он прикреплен:
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
// (a lot of irrelevant stuff removed)
@OneToMany(type => NewsItem, newsItem => newsItem.receiver)
news: Promise<NewsItem[]>;
}
А вот пример конкретного элемента новостей:
@ChildEntity()
export class ConcreteNewsItem extends NewsItem {
@Column()
someData: number;
}
Все это кажется простымдостаточно из документации. Однако вот что я не получаю: как мне пройти news
пользователя, проверить, какой именно тип каждого из них, и получить объект конкретного типа новостного элемента для каждого из них?
Насколько я понимаю, TypeORM создаст столбец с именем type
в определении SQL таблицы news_item
, но этот столбец недоступен в самом классе NewsItem
, и я не могу понять, какпостроить запрос, который бы на самом деле дал мне ConcreteNewsItem
объектов!