我现在使用nest js,用prisma作为orm。
我的问题发生在更新的时候,我有以下错误该错误是重复出现的所有实体有关系的另一个。只有在更新。:
TS2322: Type 'UpdateMarketDto' is not assignable to type '(Without<MarketsUpdateInput, MarketsUncheckedUpdateInput> & MarketsUncheckedUpdateInput) | (Without<...> & MarketsUpdateInput)'. Type 'UpdateMarketDto' is not assignable to type 'Without<MarketsUncheckedUpdateInput, MarketsUpdateInput> & MarketsUpdateInput'. Types of property 'univer' are incompatible. Type 'CreateUniverDto | UpdateUniverDto' is not assignable to type 'UniversUpdateOneRequiredWithoutMarketsNestedInput'. Type 'CreateUniverDto' has no properties in common with type 'UniversUpdateOneRequiredWithoutMarketsNestedInput'.
这是终点:
update(id: number, updateMarketDto: UpdateMarketDto) {
return this.prisma.markets.update({
where: { id },
data: updateMarketDto,
});
}
这是创建的DTO:
export class CreateMarketDto {
@ApiProperty({ example: 'Femme' })
@IsString()
@IsDefined()
name: string;
@ApiProperty({ example: 'textile.png' })
@IsString()
@IsOptional()
icon: string;
@ApiProperty({ example: 'true' })
@IsBoolean()
isActive: boolean;
@ApiProperty({ example: '3' })
@IsOptional()
univer: CreateUniverDto | UpdateUniverDto;
}
这是更新后的DTO:
export class UpdateMarketDto extends PartialType(CreateMarketDto) {}
这是棱镜模型:
model Univers {
id Int @id @default(autoincrement())
name String
icon String?
isActive Boolean @default(false)
markets Markets[]
}
model Markets {
id Int @id @default(autoincrement())
name String
icon String?
isActive Boolean @default(false)
univer Univers @relation(fields:[univerId], references: [id])
univerId Int
categories Categories[]
}
2条答案
按热度按时间r7s23pms1#
您发布的错误看起来像是TypeScript错误,因此它实际上不会停止更新的发生,除非该错误停止了服务器的运行。
错误很明显-
第一个月
无论
CreateUniverDto
是什么类型,它都与Prisma的UniversUpdateOneRequiredWithoutMarketsNestedInput
类型不兼容。如果您确信这两种类型确实相同,则可以将其强制转换为所需的类型:您应该检查
Prisma.UniversUpdateOneRequiredWithoutMarketsNestedInput
以确保其类型与您传递的updateMarketDto
类型完全相同,否则更新将失败。如果这两种类型不重叠,则需要手动将其提供给Prisma:
hmmo2u0o2#
必须单独更新嵌套特性的数据,如下所示: