为 Json 的 DTO 中的字段提供 JSON 类型?输入 prisma 模型会引发错误

问题描述 投票:0回答:1

enter image description here

创建-dealer-dto.ts 文件

export class CreateDealerDto {
  @IsOptional()
  ccm: JSON;
}

schema.prisma 文件

model Dealer {
  id                Int          @id @default(autoincrement())
  
  ccm               Json?
  createdBy         Int          @map("created_by")
  createdAt         DateTime     @default(now()) @map("created_at")
  updatedAt         DateTime     @updatedAt @map("updated_at")
  deletedBy         Int?         @map("deleted_by")
  deletedAt         DateTime?    @map("deleted_at")
 
  @@map("dealers")
}

dealer-service.ts 文件

async create(createDealerDto: CreateDealerDto): Promise<Dealer> {
      this.prismaService.dealer.create({ data: createDealerDto });
    return this.prismaService.dealer.create({
      data: createDealerDto,
    });
  }

会出现什么问题?如果我尝试在 dto 中使用字符串,错误消失了,但它没有保存为 JSON 对象,而是保存为字符串。

mysql json nestjs prisma
1个回答
0
投票

这里有一个示例解决方案

而不是直接传递它 DTO 是 Class 不是类型,typescript 甚至 prisma 都不会接受它。

所以你可以简单地使用这个解决方法

JSON.parse(JSON.stringify(data))

但是您需要确保验证传入的数据是否为数组类型,并为此添加约束

© www.soinside.com 2019 - 2024. All rights reserved.