我创建的地方,然后我不断得到棱镜错误,但我提供了所有需要的数据。每次我创建的地方,我得到这个错误,但我提供了所有必需的数据。我没有得到我可能犯的错误,我检查了一遍又一遍我的代码。
Invalid `this.prisma.place.create()` invocation in
C:\Users\charm\tourism-portal\src\place\place.service.ts:12:52
9 constructor(private prisma: PrismaService) {}
10
11 async createTouristicPlace(adminId: number, dto: CreatePlaceDto) {
→ 12 const touristicPlace = await this.prisma.place.create({
data: {
admin: {
connect: {
id: 35
}
},
+ name: String,
+ location: String,
? createdAt?: DateTime,
? updatedAt?: DateTime
}
})
Argument name for data.name is missing.
Argument location for data.location is missing.
下面是我代码:
import { Injectable } from '@nestjs/common';
import { CreatePlaceDto, EditPlaceDto } from './dto';
import { PrismaService } from '../prisma/prisma.service';
@Injectable()
export class TouristicPlaceService {
constructor(private prisma: PrismaService) {}
async createTouristicPlace(adminId: number, dto: CreatePlaceDto) {
const touristicPlace = await this.prisma.place.create({
data: {
admin: {
connect: { id: adminId },
},
...dto,
},
});
console.log(dto);
return console.log(touristicPlace);
}
这是我的dto
import { IsNotEmpty, IsString } from 'class-validator';
export class CreatePlaceDto {
@IsString()
@IsNotEmpty()
name: string;
@IsString()
@IsNotEmpty()
location: string;
}
我的DB模型
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Admin {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
adminID String @unique
email String @unique
firstName String
lastName String
hash String
Places Place[]
@@map("admins")
}
model Place {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
location String
adminId Int
admin Admin @relation(fields: [adminId], references: [id])
@@map("places")
}
我试图创建一个地方端点,但我一直得到一个Prisma错误,我不是真的得到我是新的Prisma和NestJ。
1条答案
按热度按时间nzk0hqpo1#
当使用
Prisma
创建或更新具有关系的记录时,必须确保数据结构与Prisma
所期望的相匹配。未对齐可能导致意外行为或错误。在您的情况下,检查
dto
(数据传输对象)结构至关重要。如果使用异步操作来生成或修改dto
,则在Prisma
create
方法中使用它时,它可能尚未就绪或结构不正确。对于故障排除,我建议逐步构建您的数据对象,而不是仅仅依靠dto的spread运算符(请先检查此
create
函数,而不要使用dto
中的值来检查它是否正确):而不是:
这种方法使您可以清楚地看到每个字段,并有助于识别dto中的任何异常或缺失值。一旦你对dto的结构和内容有了信心,你就可以用spread操作符重新集成它。