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

how to create a optional list field in 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?
}

我正在尝试将类别模型中的产品字段设置为可选。但 Prisma 不允许这样做。但我希望我的用户即使不创建 post 也能创建一个类别,反之亦然。我该如何解决这个问题?

根据 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: {},
  }
})

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

await prisma.category.update({
  where: {
    id: "category-id"
  },
  data: {
    products: {
      connect: {
        id: "product-id"
      }
    }
  }
})