如何在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
相关产品推荐
相关产品推荐

