You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据JSON数据生成包含多层关联的复杂Prisma Schema模型

Prisma 模型转换结果

结构说明

  • 主模型为 Item,与 Option、Addition 为一对多关联
  • Option 模型与 OptionItem(对应JSON中的list字段)为一对多关联
  • Image对象提供两种实现方案,可根据你使用的数据库选择:
    • 方案1:PostgreSQL等支持复合类型的数据库,直接定义复合类型无需单独建表
    • 方案2:兼容所有数据库,直接平铺字段到Item模型,无需额外关联

完整Prisma Schema代码

// 方案1:使用PostgreSQL复合类型定义Image
type Image {
  title String
  url   String
}

model Item {
  id          Int         @id @default(autoincrement())
  name        String
  image       Image       // 复合类型Image
  description String
  price       Int
  options     Option[]
  additions   Addition[]
}

// 方案2:兼容所有数据库的Image实现,替换上述Item里的image字段即可
// model Item {
//   id          Int         @id @default(autoincrement())
//   name        String
//   imageTitle  String
//   imageUrl    String
//   description String
//   price       Int
//   options     Option[]
//   additions   Addition[]
// }

model Addition {
  id     Int  @id @default(autoincrement())
  name   String
  price  Int
  itemId Int
  item   Item @relation(fields: [itemId], references: [id], onDelete: Cascade)
}

model Option {
  id          Int          @id @default(autoincrement())
  name        String
  itemId      Int
  item        Item         @relation(fields: [itemId], references: [id], onDelete: Cascade)
  optionItems OptionItem[] // 对应JSON中的list字段
}

model OptionItem {
  id       Int    @id @default(autoincrement())
  name     String
  price    Int
  optionId Int
  option   Option @relation(fields: [optionId], references: [id], onDelete: Cascade)
}

查询返回匹配JSON结构的示例

你可以通过嵌套include查询出完整关联数据,简单处理后就能和你给出的JSON结构完全匹配:

const rawItem = await prisma.item.findUnique({
  where: { id: 1 },
  include: {
    options: {
      include: {
        optionItems: true
      }
    },
    additions: true
  }
})

// 字段名转换,把optionItems改为list
const formattedItem = {
  ...rawItem,
  options: rawItem.options.map(opt => ({
    ...opt,
    list: opt.optionItems
  }))
}

内容的提问来源于stack exchange,提问作者Hasibur Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:45:00