在我的嵌套应用程序中,我有两个表Users和Profession我想在这两个表之间创建OneToOne关系。 下面的代码演示了我如何实现它,但它只将数据保存在一个表中,即Users,而不是Profession表中。
用户.entity.ts
import { Column, CreateDateColumn, Entity, JoinColumn, OneToOne,
PrimaryGeneratedColumn } from "typeorm";
import { Profession } from "./profession.entity";
@Entity({name:'users'})
export class User {
@PrimaryGeneratedColumn({type: 'bigint'})
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
@Column({ default: true })
isActive: boolean;
@CreateDateColumn()
createdAt: Date
@OneToOne(() => Profession, (prof) => prof.user,{cascade:true})
@JoinColumn()
profession: Profession
}
专业.实体.ts
import { IsNotEmpty, IsInt } from "class-validator";
import { Column, Entity, OneToOne, PrimaryGeneratedColumn } from "typeorm";
import { User } from "./user.entity";
@Entity({name:'profession'})
export class Profession{
@PrimaryGeneratedColumn()
id:number;
@IsNotEmpty({message:"Please enter job type."})
@Column()
job_type:string;
@IsNotEmpty({message:"Please enter experience."})
@IsInt({message:"Invalid type"})
@Column()
experience: number;
@OneToOne(() => User,(use) => use.profession)
user:User;
}
创建用户.dto.ts
import { IsBoolean, IsNotEmpty, IsString } from "class-validator";
import { ProfessionDto } from "./profession.dto";
export class CreateUserDto {
@IsNotEmpty({message:"Please enter first name."})
@IsString(({message:"Please enter valid first name."}))
firstName:string;
@IsNotEmpty({message:"Please enter last name."})
@IsString(({message:"Please enter valid last name."}))
lastName:string;
@IsBoolean({message:"Value is not valid."})
isActive:boolean;
profession:ProfessionDto;
}
专业.dto.ts
import { IsNotEmpty } from "class-validator";
export class ProfessionDto {
id:number;
@IsNotEmpty({message:"Please enter job type."})
job_type:string;
@IsNotEmpty({message:"Please enter experience."})
experience:number;
}
用户.controller.ts
import { Controller, Post, Body, UsePipes, ValidationPipe } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { ProfessionDto } from './dto/profession.dto';
@Controller('/api')
export class UserController {
constructor(private readonly userService: UserService) {}
@Post('/addUser')
@UsePipes(ValidationPipe)
create(@Body() createUserDto: CreateUserDto) {
return this.userService.create(createUserDto);
}
}
用户.service.ts
import { Injectable } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from './entities/user.entity';
import { Repository } from 'typeorm';
@Injectable()
export class UserService {
constructor(
@InjectRepository(User)
private userRepository:Repository<User>,
){}
async create(createUserDto: CreateUserDto) {
let addUser = await this.userRepository.create(createUserDto);
let data = await this.userRepository.insert(addUser);
return {message:"User added successfully"};
}
}
现在,Users 表已填充,但 Profession 表为空。
下面是我在邮递员中发出 POST 请求:
我无法弄清楚我在代码中到底做错了什么。任何帮助将不胜感激。