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

如何在Prisma中定义包含嵌套对象的模型?

Mongoose嵌套Schema转Prisma模型

针对你提供的Mongoose Schema,对应的Prisma模型可以通过**嵌入式类型(Embedded Types)**实现嵌套结构,以下是具体代码:

// 定义复用的嵌套类型:包含oldState和currentState数组
type StatePair {
  oldState: Json[]  // 若数组元素是特定类型,可替换为String[]/Int[]等
  currentState: Json[]
}

// 定义主模型,对应Mongoose的sourceSchema
model Source {
  id        String   @id @default(cuid())  // Prisma要求模型必须有主键,这里用cuid生成
  data      Data                           // 嵌套的data对象
  createdAt DateTime @default(now())       // 可选:添加创建时间字段
  updatedAt DateTime @updatedAt            // 可选:添加更新时间字段
}

// 定义data对应的嵌套类型
type Data {
  national StatePair
  sports   StatePair
}

关键说明:

  • 类型匹配:Mongoose里的Array在Prisma中需要明确元素类型,Json[]适用于混合类型或不确定结构的数组;如果数组是单一类型(比如字符串数组),直接替换为String[]、Int[]等更贴合强类型特性。
  • 嵌入式类型:用type定义的嵌套结构会和主模型存在同一张数据库表中,和Mongoose的嵌套文档行为完全一致。
  • 主键要求:Prisma模型必须包含主键字段(这里用id和cuid()生成,也可以换成@default(uuid()))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:30:57