Hei*_*erg 4 sql typescript typeorm
我试图通过在 typeorm 中加入表格来选择特定的列。
当我看到以下材料时,有示例代码。
https://orkhan.gitbook.io/typeorm/docs/select-query-builder#joining-relations
const user = await createQueryBuilder("user")
.leftJoinAndSelect("user.photos", "photo")
.where("user.name = :name", { name: "Timber" })
.getOne();
Run Code Online (Sandbox Code Playgroud)
import {Entity, PrimaryGeneratedColumn, Column, OneToMany} from "typeorm";
import {Photo} from "./Photo";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@OneToMany(type => Photo, photo => photo.user)
photos: Photo[];
}
Run Code Online (Sandbox Code Playgroud)
import {Entity, PrimaryGeneratedColumn, Column, ManyToOne} from "typeorm";
import {User} from "./User";
@Entity()
export class Photo {
@PrimaryGeneratedColumn()
id: number;
@Column()
url: string;
@ManyToOne(type => User, user => user.photos)
user: User;
}
Run Code Online (Sandbox Code Playgroud)
例如我想要的结果如下。where user.name =="Timber"
{
id: user.id
name: user.name
url: photo.url
}
Run Code Online (Sandbox Code Playgroud)
有什么好的方法可以实现这一目标吗?
谢谢
const user = await createQueryBuilder("user")
.leftJoinAndSelect("user.photos", "photo")
.select(['user.id', 'user.name', 'photo.url']) // added selection
.where("user.name = :name", { name: "Timber" })
.getOne();
Run Code Online (Sandbox Code Playgroud)
通过此查询,您将获得:
{
id: 1,
name: 'Timber',
photos: [{ url: 'someurl1' }, ..., { url: 'someurlN' }]
}
Run Code Online (Sandbox Code Playgroud)
小智 8
当您想选择特定列时,您必须使用 getRawOne ,如下所示,
const user = await createQueryBuilder("user")
.leftJoinAndSelect("user.photos", "photo")
.select(['user.id', 'user.name', 'photo.url'])
.where("user.name = :name", { name: "Timber" })
.getRawOne();
Run Code Online (Sandbox Code Playgroud)