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

