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 没有未定义或可选的行,只有可空或不可空。

如果仔细观察,您会发现其他类型,例如 UserCreateArgsdata 属性 将用于 create 方法。该类型具有您想要的可选字段。

我不明白你从哪里得到这个错误?您是否尝试过将这些类型用于您自己的包装器?