Prisma 中生成的类型没有模式中定义的可选字段
Generated types in Prisma do not have optional fields as defined in the schema
使用 Prisma v 3.8.1
我的User
模特是
model User {
id Int @id @default(autoincrement())
createdAt DateTime? @default(now())
email String @unique
name String
password String
accessToken String?
accessTokenCreatedAt DateTime? @default(now())
address String?
city String?
state String?
postalCode String?
phoneNumber Int?
igUserId String?
role Role @relation(fields: [roleId], references: [id])
roleId Int
organization Organization? @relation(fields: [organizationId], references: [id])
organizationId Int?
orders Order[]
}
生成的类型是
type User = {
id: number;
createdAt: Date | null;
email: string;
name: string;
password: string;
accessToken: string | null;
accessTokenCreatedAt: Date | null;
address: string | null;
city: string | null;
state: string | null;
postalCode: string | null;
phoneNumber: number | null;
igUserId: string | null;
roleId: number;
organizationId: number | null;
}
如模型中所述,此类型中没有可选字段,即使是自动生成的 ID 字段也是如此。所以在我的代码中使用这种类型时,我不断收到这个错误
Type '{ name: any; email: any; password: string; roleId: number; }' is missing the following properties from type 'User': id, createdAt, accessToken, accessTokenCreatedAt, and 7 more.
预期行为:可选字段应标记为可选?在生成的打字稿类型中,以便在代码中轻松仅设置必填字段并将其传递给 .create() 方法
此类型不适用于 create
或类似方法。它是 return 类型的 find*
方法等等。它应该匹配 DB table 并且 table 没有未定义或可选的行,只有可空或不可空。
如果仔细观察,您会发现其他类型,例如 UserCreateArgs
和 data
属性 将用于 create
方法。该类型具有您想要的可选字段。
我不明白你从哪里得到这个错误?您是否尝试过将这些类型用于您自己的包装器?
使用 Prisma v 3.8.1
我的User
模特是
model User {
id Int @id @default(autoincrement())
createdAt DateTime? @default(now())
email String @unique
name String
password String
accessToken String?
accessTokenCreatedAt DateTime? @default(now())
address String?
city String?
state String?
postalCode String?
phoneNumber Int?
igUserId String?
role Role @relation(fields: [roleId], references: [id])
roleId Int
organization Organization? @relation(fields: [organizationId], references: [id])
organizationId Int?
orders Order[]
}
生成的类型是
type User = {
id: number;
createdAt: Date | null;
email: string;
name: string;
password: string;
accessToken: string | null;
accessTokenCreatedAt: Date | null;
address: string | null;
city: string | null;
state: string | null;
postalCode: string | null;
phoneNumber: number | null;
igUserId: string | null;
roleId: number;
organizationId: number | null;
}
如模型中所述,此类型中没有可选字段,即使是自动生成的 ID 字段也是如此。所以在我的代码中使用这种类型时,我不断收到这个错误
Type '{ name: any; email: any; password: string; roleId: number; }' is missing the following properties from type 'User': id, createdAt, accessToken, accessTokenCreatedAt, and 7 more.
预期行为:可选字段应标记为可选?在生成的打字稿类型中,以便在代码中轻松仅设置必填字段并将其传递给 .create() 方法
此类型不适用于 create
或类似方法。它是 return 类型的 find*
方法等等。它应该匹配 DB table 并且 table 没有未定义或可选的行,只有可空或不可空。
如果仔细观察,您会发现其他类型,例如 UserCreateArgs
和 data
属性 将用于 create
方法。该类型具有您想要的可选字段。
我不明白你从哪里得到这个错误?您是否尝试过将这些类型用于您自己的包装器?