sql - typeorm 不保存到 SQL 数据库
问题描述
所以我在 NestJS 上工作,作为 orm,我使用 Typeorm,我有两个像这样与 @ManyToOne 连接的表。这些是我的实体
订单实体
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 orderDto
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;
}
这是clientDTO
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"
}
}
]
解决方案
推荐阅读
- css - 如何将背景图像放置在另一个背景图像的确切中心
- ios - iOS集成SDK、包
- angular - Angular 6 BehaviourSubject.next 要求类方法的值
- httpclient - 地图运算符下的代码不适用于角度 6
- php - 在 PHP Echo 中设置下拉列表值
- android-studio - 设备未在 Android Studio 中显示抖动
- python - Python 错误 - 列表索引超出范围。其他修复似乎不起作用
- mysql - 显示引用自 MySQL 中另一列的列内容
- java - 如何在 esper 上对窗口进行分组(我希望 esper 按每个组创建窗口。)
- arrays - laravel 中的数组数据