如何添加关系数据?

时间:2019-07-15 13:03:29

标签: typescript nestjs typeorm

当我尝试保存时-关系列上为空

我如何保存此关系数据?

实体:

@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;
}

我无法解决这个问题,谁可以帮助解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为这与您的实体无关。您的查询很有可能出现问题。保存关系时,不会自动从存储库中查询它们。

看看这个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'],
    });
  }
}

现在,如果已分配用户,则应该使用关系用户来获取您的项目实体。希望这可以帮助!