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

如何在Prisma(PostgreSQL)中存储对象数组并定义对应数据模型

方案1:关系表设计(推荐)

适合需要对starter内部字段做单独查询、过滤、统计的场景,是最符合关系型数据库设计规范的实现:

model Store {
  id      Int       @id @default(autoincrement())
  brand   String
  // 对应原类型里的 starter?: starter[],默认空数组即满足可选要求
  starter Starter[]
}

model Starter {
  id     Int    @id @default(autoincrement())
  name   String
  weight Float
  // 外键关联Store表,可选配置满足starter可选的要求
  store  Store? @relation(fields: [storeId], references: [id])
  storeId Int?
}

数据写入示例:

await prisma.store.create({
  data: {
    brand: "toto",
    starter: {
      create: [
        { name: "auto", weight: 15.7 },
        { name: "manual", weight: 13.7 }
      ]
    }
  }
})

方案2:JSON字段设计

如果不需要对starter内部做单独查询,只是做完整存取,可以简化为单模型设计,开发成本更低:

model ToStore {
  id      Int    @id @default(autoincrement())
  brand   String
  // 可选JSON类型直接存储starter数组
  starter Json?
}

数据写入示例:

await prisma.toStore.create({
  data: {
    brand: "toto",
    starter: [
      { name: "auto", weight: 15.7 },
      { name: "manual", weight: 13.7 }
    ]
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:39:01