如何添加关系数据?
How add relationship data?
当我尝试保存时 - 我在关系列上有 null
如何保存这个关系数据?
实体:
@Entity('project')
export class Project {
@PrimaryGeneratedColumn()
id: number;
@Column('varchar')
name: string;
@Column('varchar')
description: string;
@Column()
createdAt: Date;
@ManyToOne(type => User)
@JoinColumn({ referencedColumnName: 'id' })
user: User|number;
}
Dto:
export class CreateProjectDto {
readonly id: number;
readonly name: string;
readonly description: string;
readonly createdAt: Date;
readonly user: User|number;
}
我无法解决这个问题,谁能帮忙解决这个问题?
我认为这不是您的实体的问题。您的查询很可能存在问题。保存关系时,不会自动从存储库中查询它们。
看看这个https://typeorm.io/#/undefined/loading-objects-with-their-relations
您会注意到有一个名为 relations
的键。这是您指定要加入用户的地方。例如
import {Injectable} from '@nestjs/common';
import {Repository} from 'typeorm';
import {InjectRepository} from '@nestjs/typeorm';
import Project from './project.entity';
@Injectable()
export class ProjectService {
constructor(@InjectRepository(Project) private readonly projectRepository: Repository<Project>) {}
async findOne(id: number): Promise<Project | null> {
return await this.projectRepository.findOne({
where: {
id,
},
relations: ['user'],
});
}
}
如果已分配用户,这现在应该会获取具有关系用户的项目实体。希望这可以帮助!
当我尝试保存时 - 我在关系列上有 null
如何保存这个关系数据?
实体:
@Entity('project')
export class Project {
@PrimaryGeneratedColumn()
id: number;
@Column('varchar')
name: string;
@Column('varchar')
description: string;
@Column()
createdAt: Date;
@ManyToOne(type => User)
@JoinColumn({ referencedColumnName: 'id' })
user: User|number;
}
Dto:
export class CreateProjectDto {
readonly id: number;
readonly name: string;
readonly description: string;
readonly createdAt: Date;
readonly user: User|number;
}
我无法解决这个问题,谁能帮忙解决这个问题?
我认为这不是您的实体的问题。您的查询很可能存在问题。保存关系时,不会自动从存储库中查询它们。
看看这个https://typeorm.io/#/undefined/loading-objects-with-their-relations
您会注意到有一个名为 relations
的键。这是您指定要加入用户的地方。例如
import {Injectable} from '@nestjs/common';
import {Repository} from 'typeorm';
import {InjectRepository} from '@nestjs/typeorm';
import Project from './project.entity';
@Injectable()
export class ProjectService {
constructor(@InjectRepository(Project) private readonly projectRepository: Repository<Project>) {}
async findOne(id: number): Promise<Project | null> {
return await this.projectRepository.findOne({
where: {
id,
},
relations: ['user'],
});
}
}
如果已分配用户,这现在应该会获取具有关系用户的项目实体。希望这可以帮助!