const topic = await Topic.query(`
select
t.*,
f.user_id user_followed_id,
m.user_id user_moderator_id
from topic t
left join follow f on f.topic_id = t.id and f.user_id = $1
left join moderator m on m.topic_id = t.id and m.user_id = $2
where t.title = $3`;
const topic = await AppDataSource
.getRepository(Topic)
.createQueryBuilder("topic")
.getOne()
@Index({ fulltext: true })
и использовать построитель запросов для написания собственного пользовательского запроса пользовательского запроса и использовать специальный синтаксис sql.@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Index({ fulltext: true })
@Column("varchar")
name: string;
@Index({ fulltext: true })
@Column("varchar")
lastname: string;
@Index({ fulltext: true })
@Column("text")
personalDescription: string;
}
const searchTerm = "programmer";
const result = await connection.manager.getRepository(User)
.createQueryBuilder()
.select()
.where('MATCH(lastname) AGAINST ('${searchTerm}' IN BOOLEAN MODE)')
.orWhere('MATCH(name) AGAINST ('${searchTerm}' IN BOOLEAN MODE)')
.orWhere('MATCH(personalDescription) AGAINST ('${searchTerm}' IN BOOLEAN MODE)')
.getMany();