【发布时间】:2021-12-04 12:31:28
【问题描述】:
这是我的 DTO
export class CreateGradeDto {
id: string;
first_bimester?: number;
second_bimester?: number;
third_bimester?: number;
fourth_bimester?: number;
studentId: never;
classId: string;
createdAt: Date;
updatedAt: Date;
}
这是我的棱镜模型
model Grades {
id String @id @unique
first_bimester Float
second_bimester Float
third_bimester Float
fourth_bimester Float
student Student @relation(fields: [studentId], references: [id])
studentId String @unique
class Classes @relation(fields: [classId], references: [id])
classId String @unique
createdAt DateTime @default(now())
updatedAt DateTime @default(now())
}
这是学生模型
export class CreateStudentDto {
id: string;
name: string;
cpf: string;
createdAt: Date;
updatedAt: Date;
}
(这个项目我用的是nestjs)
我不知道为什么我不能保存成绩,即使知道 ID 一直保存为字符串。我还检查了真正的 postgre 数据库,它们被保存为字符串。
有人可以帮帮我吗?
【问题讨论】:
-
你是在app中设置id而不是db吗?
-
是的,我使用 uuid lib 中的 v4 来创建 id
-
你应该有一个映射层,不要只是将dto传递给db(出于各种原因)。看起来 prisma 会根据模型模式为您生成类型,这就是类型不匹配的原因。有关示例,请参见 here。
-
我认为您需要创建该模型的新实例,将 dto 中的值映射到该实例,然后将该新实例传递给 create 方法。或者,如果您希望它快速而肮脏,您的 dto 可以扩展该类型。
-
我认为最好的做法是像这样直接发送 dto。谢谢你的帮助,我试试看。
标签: node.js typescript nestjs prisma