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

如何在Prisma中将三个独立模型合并为一个Information模型?

如何将三个Prisma模型整合为一个Information模型(NestJS + MongoDB)

根据你的需求,有两种常见实现方式,取决于你是否需要保留原有的men、women、child独立模型:

方式一:嵌入式文档(直接嵌套数据)

适合不需要单独操作原模型、希望所有数据存在同一个MongoDB文档的场景。

步骤1:定义嵌套类型

先在Prisma Schema中定义对应的数据类型(复用原模型的字段):

type Male {
  malename: String
  malegender: String
  maledob: String
  maleincome: String
}

type Women {
  womenname: String
  womengender: String
  womendob: String
  womenincome: String
}

type Child {
  childname: String
  childgender: String
  childdob: String
}

步骤2:创建Information模型

用上述类型定义嵌套字段:

model Information {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  male Male? // 可选字段,根据业务需求改为必填(去掉?)
  women Women?
  child Child?
}

这种方式下,所有数据会直接嵌入Information文档中,查询时无需关联其他表。


方式二:关系关联(保留原模型)

适合需要单独维护men、women、child数据,或数据可能被多个Information引用的场景。

步骤1:修改原模型添加关联字段

给每个原模型添加关联到Information的字段:

model Men {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  malename String
  malegender String
  maledob String
  maleincome String
  // 关联到Information
  information Information? @relation(fields: [informationId], references: [id])
  informationId String? @db.ObjectId
}

model Women {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  womenname String
  womengender String
  womendob String
  womenincome String
  information Information? @relation(fields: [informationId], references: [id])
  informationId String? @db.ObjectId
}

model Child {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  childname String
  childgender String
  childdob String
  information Information? @relation(fields: [informationId], references: [id])
  informationId String? @db.ObjectId
}

步骤2:定义Information模型的关联

在Information中声明关联的原模型字段:

model Information {
  id String @id @default(auto()) @map("_id") @db.ObjectId
  male Men?
  women Women?
  child Child?
}

查询示例(NestJS中)

查询时通过include关联获取关联数据:

const info = await this.prisma.information.findUnique({
  where: { id: '目标ID' },
  include: { male: true, women: true, child: true },
});

后续操作

修改完Schema后,执行以下命令更新Prisma客户端:

npx prisma generate

如果已有存量数据,需要编写迁移脚本将原模型的数据同步到新的Information模型中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:10:26