类型表未保存到SQL数据库
所以我在NestJS上工作,作为orm,我使用Typeorm 我有两张像这样用@ManyToOne连接的桌子。 这些是我的实体 订单实体类型表未保存到SQL数据库,sql,node.js,typescript,nestjs,typeorm,Sql,Node.js,Typescript,Nestjs,Typeorm,所以我在NestJS上工作,作为orm,我使用Typeorm 我有两张像这样用@ManyToOne连接的桌子。 这些是我的实体 订单实体 import { plainToClass } from 'class-transformer'; import { Entity, Column, CreateDateColumn, ManyToOne, JoinColumn } from 'typeorm'; import { AbstractEntity } from '../../../common/
import { plainToClass } from 'class-transformer';
import { Entity, Column, CreateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
import { AbstractEntity } from '../../../common/abstract.entity';
import { OrderDto } from '../dtos/order/order.dto';
import { Client } from './client.entity'
import { Collaborator } from './collaborator.entity';
import { SalesChannels } from './sales_channel.entity';
@Entity({ name: 'orders' })
export class Order extends AbstractEntity {
@CreateDateColumn({type: 'timestamp', name: 'deleted_at' })
deleted_at: Date ;
@ManyToOne(() => Client, (client) => client)
@JoinColumn({ name: 'client'})
client: Client;
@ManyToOne(() => Collaborator, (collaborator) => collaborator)
@JoinColumn({ name: 'collaborator'})
collaborator: Collaborator;
@ManyToOne(() => SalesChannels, (sales_channel) => sales_channel)
@JoinColumn({ name: 'sales_channel'})
sales_channel: SalesChannels;
@Column({ nullable: false})
payment_method: string;
@Column({ nullable: true})
promotion: string;
@Column({ nullable:false})
tva_code: number;
@Column({ nullable:true})
status:string;
import { plainToClass } from 'class-transformer';
import { Entity, Column, OneToMany } from 'typeorm';
import { AbstractEntity } from '../../../common/abstract.entity';
import { ClientDto } from '../dtos/client/client.dto';
import { Order } from './order.entity';
@Entity({ name: 'clients' })
export class Client extends AbstractEntity {
@Column({ nullable: false })
firstName: string;
@Column({ nullable: true })
lastName: string;
@Column({ unique: true, nullable: true })
phone: number;
@OneToMany(() => Order, order => order.client)
orders: Order[];
toDto() {
return plainToClass(ClientDto, this);
}
}
客户实体
import { plainToClass } from 'class-transformer';
import { Entity, Column, CreateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
import { AbstractEntity } from '../../../common/abstract.entity';
import { OrderDto } from '../dtos/order/order.dto';
import { Client } from './client.entity'
import { Collaborator } from './collaborator.entity';
import { SalesChannels } from './sales_channel.entity';
@Entity({ name: 'orders' })
export class Order extends AbstractEntity {
@CreateDateColumn({type: 'timestamp', name: 'deleted_at' })
deleted_at: Date ;
@ManyToOne(() => Client, (client) => client)
@JoinColumn({ name: 'client'})
client: Client;
@ManyToOne(() => Collaborator, (collaborator) => collaborator)
@JoinColumn({ name: 'collaborator'})
collaborator: Collaborator;
@ManyToOne(() => SalesChannels, (sales_channel) => sales_channel)
@JoinColumn({ name: 'sales_channel'})
sales_channel: SalesChannels;
@Column({ nullable: false})
payment_method: string;
@Column({ nullable: true})
promotion: string;
@Column({ nullable:false})
tva_code: number;
@Column({ nullable:true})
status:string;
import { plainToClass } from 'class-transformer';
import { Entity, Column, OneToMany } from 'typeorm';
import { AbstractEntity } from '../../../common/abstract.entity';
import { ClientDto } from '../dtos/client/client.dto';
import { Order } from './order.entity';
@Entity({ name: 'clients' })
export class Client extends AbstractEntity {
@Column({ nullable: false })
firstName: string;
@Column({ nullable: true })
lastName: string;
@Column({ unique: true, nullable: true })
phone: number;
@OneToMany(() => Order, order => order.client)
orders: Order[];
toDto() {
return plainToClass(ClientDto, this);
}
}
这是我的DTO
订购至
import { ApiModelProperty } from '@nestjs/swagger';
import { Exclude, Expose, Type } from 'class-transformer';
import { IsEmail, IsNotEmpty, IsNumber, IsString } from 'class-validator';
import { AbstractDto } from '../../../../common/dto/abstract.dto';
import { ClientDto } from '../client/client.dto';
import { ClientRegisterDto } from '../client/client-register.dto';
import { CollaboratorDto } from '../collaborator/collaborator.dto';
import { CollaboratorRegisterDto } from '../collaborator/collaborator-register.dto';
import { SalechChannelDto } from '../sales_channel/salech_channel.dto';
import { SalesChannelRegisterDto } from '../sales_channel/sales_channel-register.dto';
@Exclude()
export class OrderDto extends AbstractDto {
@Expose()
@IsString()
@ApiModelProperty()
readonly id!: string;
@Expose()
@IsString()
@Type(() => ClientDto)
@ApiModelProperty({ description: 'client id' })
client: ClientRegisterDto;
@Expose()
@IsString()
@Type(() => CollaboratorDto)
@ApiModelProperty({ description: 'collaborator id' })
readonly collaborator!: CollaboratorRegisterDto;
@Expose()
@IsString()
@Type(() => SalechChannelDto)
@ApiModelProperty({ description: 'sales channel id' })
readonly sales_channel!: SalesChannelRegisterDto;
@Expose()
@IsString()
@ApiModelProperty()
readonly payment_method!: string;
@Expose()
@IsString()
@ApiModelProperty()
readonly promotion: string;
@Expose()
@IsNumber()
@IsNotEmpty()
@ApiModelProperty()
readonly tva_code: number;
@Expose()
@IsString()
@ApiModelProperty()
readonly status: string;
}
这是clientRegisterDTO
import { ApiModelProperty } from '@nestjs/swagger';
import { Exclude, Expose } from 'class-transformer';
import { IsNotEmpty, IsString, IsNumber } from 'class-validator';
import { AbstractDto } from '../../../../common/dto/abstract.dto';
@Exclude()
export class ClientRegisterDto extends AbstractDto {
@Expose()
@IsString()
@ApiModelProperty()
readonly id!: string;
}
这是我的客户
import { ApiModelProperty } from '@nestjs/swagger';
import { Exclude, Expose } from 'class-transformer';
import { IsNotEmpty, IsString, IsNumber } from 'class-validator';
import { AbstractDto } from '../../../../common/dto/abstract.dto';
@Exclude()
export class ClientDto extends AbstractDto {
@Expose()
@IsString()
@ApiModelProperty()
readonly id!: string;
@Expose()
@IsString()
@ApiModelProperty()
readonly firstName!: string;
@Expose()
@IsString()
@ApiModelProperty()
readonly lastName!: string;
@Expose()
@IsNumber()
@IsNotEmpty()
@ApiModelProperty()
readonly phone: string;
}
我只想将客户机id保存在客户机表中,当我尝试将其保存到数据库时,我会收到一个错误,如下所示,同样的情况也适用于其他连接的表。问题是什么
"message": [
{
"value": {
"id": "string"
},
"property": "client",
"children": [],
"constraints": {
"isString": "client must be a string"
}
},
{
"value": {
"id": "string"
},
"property": "collaborator",
"children": [],
"constraints": {
"isString": "collaborator must be a string"
}
},
{
"value": {
"id": "string"
},
"property": "sales_channel",
"children": [],
"constraints": {
"isString": "sales_channel must be a string"
}
}
]
此错误似乎来自
ValidationPipe
-在OrderDto
中,客户端字段已@IsString()
找到它,谢谢。