我有这样一门课:
import {Column, Entity, ManyToOne, PrimaryGeneratedColumn} from "typeorm";
import {Company} from "./company.entity";
import {classToPlain, Expose, Transform, Type} from 'class-transformer';
@Entity()
export class Space {
@PrimaryGeneratedColumn('uuid')
id?: string;
@ManyToOne(() => Company)
@Expose()
@Type(() => Company)
@Transform(async value => {
const res = await value;
console.log(res);
return res;
})
company!: Promise<Company>;
@Column()
name!: string;
}这是为Company准备的
@Entity()
export class Company {
@PrimaryGeneratedColumn('uuid')
id?: string;
@Column()
name!: string;
@OneToMany(() => Space, space => space.company, {
cascade: true
})
spaces!: Promise<Space[]>;
}由于某些原因,Company总是作为空间对象中的一个空对象返回,如下所示:
[
{
"id": "266F2B95-69AE-EA11-96D2-28187800655A",
"name": "Main",
"desks": 2,
"company": {}
}
]即使console.log吐出
Company {
id: '09A8FB3E-C5AB-EA11-96D2-28187800655A',
name: 'Name' }我在这里做错了什么?
发布于 2020-10-13 05:55:47
类转换器同步调用转换函数。你必须使用一个热切的关系:
@ManyToOne(() => Company, { eager: true })
company!: Promise<Company>;或在之后加载属性,如下所示:
export class Space {
...
loadedCompany: Company
...
}
...
for (const space of spaces) {
space.loadedCompany = await space.company
}https://stackoverflow.com/questions/62620807
复制相似问题