TypeOrm 只检索 leftJoinAndSelect 中的一个 Field
TypeOrm only retrieve one Field in leftJoinAndSelect
我已经阅读了 typeorm 文档,但没有找到我的问题的解决方案。
在论坛中,有些人没有描述 suquery,但它不适用于 leftJoinAndSelect。
如果有人可以帮助非常感谢
我有文章实体
@Entity('article')
export class Article extends BaseEntity{
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column({type: "longtext"})
content: string;
@Column({ default: false })
is_published: boolean;
@CreateDateColumn({ type: "timestamp", default: () => 'CURRENT_TIMESTAMP' })
createDateTime: Date;
@ManyToOne(type => User, user => user.articles)
user:User;
}
和用户实体
@Entity()
export class User extends BaseEntity{
@PrimaryGeneratedColumn()
id: number;
@Column()
username: string;
@Column()
password: string;
@Column({ default: true })
isActive: boolean;
@Column({default: 'contrinutor'})
role: string
@OneToMany(()=> Article, article => article.user)
articles: Article[];
}
我想获取一篇文章并将用户关联到该文章,但只检索文章和用户名的数据,而不是所有信息数据。
目前我试过这个:
const article = await this.articleRepository
.createQueryBuilder('article')
.where({id: id})
.leftJoinAndSelect("article.user","user")
.getOne();
结果:
{
"id": 1,
"title": "My super Title",
"content": "My super content",
"is_published": false,
"createDateTime": "2021-01-21T13:37:15.894Z",
"user": {
"id": 1,
"username": "admin",
"password": "admin",
"isActive": true,
"role": "contributor"
}
}
我希望:
{
"id": 1,
"title": "My super Title",
"content": "My super content",
"is_published": false,
"createDateTime": "2021-01-21T13:37:15.894Z",
"user": {
"username": "admin",
"role": "contrinutor"
}
}
感谢帮助
您可以使用 select
、leftJoin
和 AddSelect
来存档结果:
const article = await this.articleRepository
.createQueryBuilder('article')
.where({id: id})
.leftJoin("article.user","user")
.select(['article'])
.addSelect(['user.username','user.role'])
.getOne();
我已经阅读了 typeorm 文档,但没有找到我的问题的解决方案。 在论坛中,有些人没有描述 suquery,但它不适用于 leftJoinAndSelect。 如果有人可以帮助非常感谢 我有文章实体
@Entity('article')
export class Article extends BaseEntity{
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column({type: "longtext"})
content: string;
@Column({ default: false })
is_published: boolean;
@CreateDateColumn({ type: "timestamp", default: () => 'CURRENT_TIMESTAMP' })
createDateTime: Date;
@ManyToOne(type => User, user => user.articles)
user:User;
}
和用户实体
@Entity()
export class User extends BaseEntity{
@PrimaryGeneratedColumn()
id: number;
@Column()
username: string;
@Column()
password: string;
@Column({ default: true })
isActive: boolean;
@Column({default: 'contrinutor'})
role: string
@OneToMany(()=> Article, article => article.user)
articles: Article[];
}
我想获取一篇文章并将用户关联到该文章,但只检索文章和用户名的数据,而不是所有信息数据。
目前我试过这个:
const article = await this.articleRepository
.createQueryBuilder('article')
.where({id: id})
.leftJoinAndSelect("article.user","user")
.getOne();
结果:
{
"id": 1,
"title": "My super Title",
"content": "My super content",
"is_published": false,
"createDateTime": "2021-01-21T13:37:15.894Z",
"user": {
"id": 1,
"username": "admin",
"password": "admin",
"isActive": true,
"role": "contributor"
}
}
我希望:
{
"id": 1,
"title": "My super Title",
"content": "My super content",
"is_published": false,
"createDateTime": "2021-01-21T13:37:15.894Z",
"user": {
"username": "admin",
"role": "contrinutor"
}
}
感谢帮助
您可以使用 select
、leftJoin
和 AddSelect
来存档结果:
const article = await this.articleRepository
.createQueryBuilder('article')
.where({id: id})
.leftJoin("article.user","user")
.select(['article'])
.addSelect(['user.username','user.role'])
.getOne();