NestJS使用Prisma保存成绩时报错string无法分配给never类型如何解决
问题根因
报错的直接诱因是CreateGradeDto中studentId字段被错误定义为never类型:never是TypeScript的底部类型,不允许接收任何实际赋值,你传入string类型的学生ID自然会触发Type 'string' is not assignable to type 'never'的类型错误。
修复步骤
- 修正
CreateGradeDto的studentId类型定义,和Prisma Grades模型、数据库字段类型保持一致:
export class CreateGradeDto { id: string; first_bimester?: number; second_bimester?: number; third_bimester?: number; fourth_bimester?: number; // 把原来的never类型替换为string studentId: string; classId: string; createdAt: Date; updatedAt: Date; }
- 额外注意:你的Prisma Grades模型中
first_bimester/second_bimester等四个成绩字段没有设为可选、也没有配置默认值,如果你Dto中把这几个字段设为可选(带?标记),实际调用Prisma创建接口时如果漏传对应字段会触发数据库非空约束报错,建议根据业务需求同步调整Dto字段的可选性或者Prisma模型的字段约束。 - 若你的项目使用了NestJS的类验证器,建议给
studentId补充@IsString()等验证装饰器,进一步保障传参合法性。
修复完成后重新编译项目,再调用成绩保存接口即可解决类型报错问题。
内容的提问来源于stack exchange,提问作者Luís Felipe de Souza Silva
相关产品推荐
相关产品推荐

