我有一个nestjs
应用程序,typeOrm
和postgres
作为数据库。我在Vercel
上托管了我的数据库。在这个应用程序中,我有一个带有一些字段的订单实体。我有一个status
列,其中enum
先前具有以下值
- 未决
- 供应商
- 出动
后来,我通过修改名为“order_status_enum”的状态列类型,在这个枚举中添加了另外两个状态,并添加了以下状态
- 交付
- 返回
现在,当我试图更新订单状态,以任何新添加的状态,即返回,交付,所以它抛出这个错误
exception: BadRequestException: Bad Request Exception
0|cwc-nest-server | at ValidationPipe.exceptionFactory
(/home/ubuntu/servers/cwc-
nest/node_modules/@nestjs/common/pipes/validation.pipe.js:99:20)
0|cwc-nest-server | at ValidationPipe.transform (/home/ubuntu/servers/cwc-
nest/node_modules/@nestjs/common/pipes/validation.pipe.js:72:30)
0|cwc-nest-server | at processTicksAndRejections
(node:internal/process/task_queues:93:5)
0|cwc-nest-server | at resolveParamValue (/home/ubuntu/servers/cwc-
nest/node_modules/@nestjs/core/router/router-execution-context.js:147:23)
0|cwc-nest-server | at async Promise.all (index 0)
0|cwc-nest-server | at pipesFn (/home/ubuntu/servers/cwc-
nest/node_modules/@nestjs/core/router/router-execution-context.js:150:13)
0|cwc-nest-server | at /home/ubuntu/servers/cwc-
nest/node_modules/@nestjs/core/router/router-execution-context.js:37:30 {
0|cwc-nest-server | response: {
0|cwc-nest-server | statusCode: 400,
0|cwc-nest-server | message: [ 'Invalud order status type' ],
0|cwc-nest-server | error: 'Bad Request'
0|cwc-nest-server | },
0|cwc-nest-server | status: 400,
0|cwc-nest-server | options: {}
0|cwc-nest-server | }
0|cwc-nest-server | request method: PUT request url/api/v1/orders/1
request method: PUT request url/api/v1/orders/1 {"statusCode":400,"timestamp":"2023-12-27T20:47:37.094Z","path":"/api/v1/orders/1","method":"PUT","errorName":"BadRequestException","message":"Bad Request Exception"}
字符串
注意:我在vercel remote db中的enum类型是这样的
的数据
产品代码:
这是我的订单实体
@Entity('orders')
export class Order extends BaseEntity {
@PrimaryGeneratedColumn('increment')
id: number;
@Column({
length: 500,
})
description: string;
@Column({
nullable: true,
})
quantity: number;
@Column({
nullable: false,
})
amount: number;
@ManyToOne(() => Customer, (customer) => customer.orders)
customer: Customer;
@OneToMany(() => OrderProduct, (orderProduct) => orderProduct.order, {
cascade: true,
})
@JoinTable()
products: Array<OrderProduct>;
@Column({
nullable: false,
type: 'enum',
enum: OrderStatus,
default: OrderStatus.PENDING,
})
status: OrderStatus;
@CreateDateColumn()
createdAt: Date;
}
型
下面是我的OrderStatus
枚举
更新前:
export enum OrderStatus {
PENDING = 'pending',
VENDOR = 'vendor',
DISPATCHED = 'dispatched'
}
型
更新后:
export enum OrderStatus {
PENDING = 'pending',
VENDOR = 'vendor',
DELIVERED = 'delivered',
DISPATCHED = 'dispatched',
RETURNED = 'returned',
}
型
我的UpdateOrderDTO
export class UpdateOrderDto {
@IsString()
@IsNotEmpty()
@Length(5, 400)
@IsOptional()
public description: string;
@IsNotEmpty()
@IsNumber()
@IsPositive()
@IsOptional()
public amount: number;
@IsNotEmpty()
@IsNumber()
@IsOptional()
public customerId: number;
@IsNotEmpty()
@IsArray()
@IsOptional()
@ValidateNested({ each: true })
@Type(() => OrderProductDto)
products: OrderProductDto[];
@IsOptional()
@IsEnum(OrderStatus, { message: 'Invalud order status type' })
public status: OrderStatus;
}
型
1条答案
按热度按时间cpjpxq1n1#
我能够解决上述问题。问题是,我已经在
AWS EC2
示例上部署了我的nestjs应用程序。所以,在我所做的实际代码中更新了枚举之后,我只是用pm2
停止了服务器应用程序,从相关的分支中获取最新的,然后再次用pm2
重新启动应用程序。问题是,服务器应用程序正在使用有关OrderStatusEnum的旧元数据,因为我只是提取了最新的代码,但我没有删除dist
文件夹并重新构建应用程序。我通过以下步骤解决了这个问题:pm2
停止嵌套应用程序npm run build
构建Nest应用程序pm2
再次启动nest应用程序