Prisma连接MongoDB时User集合可正常操作但Post集合无法映射的问题求助
嘿,我之前也碰到过类似的Prisma模型映射问题,给你几个实际排查的方向,应该能解决这个Post模型找不到的问题:
先确认Prisma Client是否正确生成了Post模型的代码
很多时候修改完schema后忘记重新生成Client,导致新增的Post模型没被识别。你可以试试先删除旧的生成文件,再重新生成:rm -rf node_modules/.prisma/client npx prisma generate记住每次修改schema后都要跑一遍
npx prisma generate,这是最容易忽略的步骤!检查MongoDB里的集合名称是否和Prisma的默认规则匹配
Prisma默认会把模型名转成小写复数作为集合名,比如Post模型对应的集合应该是posts,而不是Post或者其他大写/单数形式。你可以打开MongoDB Compass或者用命令行看看数据库里的集合是不是叫posts,如果不是的话,要么手动改集合名,要么在Prisma schema里给Post模型加上集合映射:model Post { id String @id @default(auto()) @map("_id") @db.ObjectId content String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt author User @relation(fields: [userId], references: [id]) userId String @@map("Post") // 这里指定数据库里的集合名,改成你实际的名字 }改完schema后记得再次运行
npx prisma generate。清除Next.js的缓存并重启开发服务器
Next.js的热重载有时候会缓存旧的Prisma Client实例,导致新模型不生效。可以试试:rm -rf .next npm run dev检查User模型和Post模型的ID类型是否匹配
确保你的User模型里的id字段也是String @id @default(auto()) @map("_id") @db.ObjectId类型,因为Post模型的userId是String类型,如果User的id是其他类型(比如Int),也可能导致关联映射出问题(不过你的报错是找不到模型,这个是次要排查点)。尝试升级Prisma到最新稳定版
你用的4.16.1版本可能存在一些MongoDB相关的小bug,升级到最新版说不定能解决:npm install prisma@latest @prisma/client@latest npx prisma generate
如果以上步骤都试了还是不行,可以跑一下npx prisma db pull,把数据库里的实际结构拉到schema里,看看Post模型的定义会不会有变化,这样能排查出schema和实际数据库是否不匹配的问题。
备注:内容来源于stack exchange,提问作者Muhammad Yumna Rakha Zufar

