如何在 prisma 中创建可选列表字段

Asi*_*hir 6 javascript postgresql node.js prisma

我正在使用 nodejs 和 prisma 创建一个基本的 crud api。我的架构如下:

generator client {
       provider = "prisma-client-js"
}

datasource db {
       provider          = "postgresql"
       url               = env("DATABASE_URL")
       shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
}

  

model Category {
       id          String    @unique @default(cuid())
       title       String
       description String
       products    Product[]
}

model Product {
  id          String    @unique @default(cuid())
  title       String
  description String
  price       Float
  createdAt   DateTime  @default(now())
  updatedAt   DateTime?

  category   Category? @relation(fields: [categoryId],  references: [id])
  categoryId String?
}
Run Code Online (Sandbox Code Playgroud)

我试图使类别模型中的产品字段可选。但 Prisma 不允许这样做。但我希望我的用户即使不创建帖子也可以创建一个类别,反之亦然。我该如何解决这个问题?

Ger*_*sey 11

根据 Prisma 文档,列表不能是可选的:https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#remarks-5

然而,该products字段不是可选的并不意味着在Category创建新字段时它不能为空:

await prisma.category.create({
  data: {
    title: 'books',
    description: 'books',
    products: {},
  }
})
Run Code Online (Sandbox Code Playgroud)

然后您可以稍后创建或连接该产品:

await prisma.category.update({
  where: {
    id: "category-id"
  },
  data: {
    products: {
      connect: {
        id: "product-id"
      }
    }
  }
})
Run Code Online (Sandbox Code Playgroud)