Postman发送POST请求时prisma.user.create()调用无效问题排查
问题
项目基于Express.js、React、本地MongoDB与Prisma,通过Postman发送POST请求创建用户时触发错误,提示firstName和lastName是UserCreateInput的未知参数,但Prisma Schema中User模型已定义这两个字段。
相关代码如下:
Prisma Schema代码
generator client { provider = "prisma-client-js" } datasource db { provider = "mongodb" url = env("DATABASE_URL") } model User { id String @id @default(auto()) @map("_id") @db.ObjectId firstName String lastName String email String? @unique password String posts Post[] }
路由代码
import express from 'express' import { getUser, getProductById, newUser, updateProduct, deleteProduct } from '../controller/ProductController.js' const router = express.Router() router.get('/users', getUser) router.get('/products/:id', getProductById) router.post('/users', newUser) router.patch('/products/:id', updateProduct) router.delete('/products/:id', deleteProduct) export default router
控制器代码
export const newUser = async (req, res) => { const { firstName, lastName, email, password } = req.body try { const user = await prisma.user.create({ data: { firstName: firstName, lastName: lastName, email: email, password: password }, }) res.status(201).json(user) } catch (error) { res.status(400).json({ msg: error.message }) } }
错误信息显示UserCreateInput仅包含id、name、email、password等参数,请问代码哪里出错了?
解决方案
问题核心是Prisma Client没有根据最新的Schema重新生成,导致代码中使用的UserCreateInput还是旧版本结构(包含name而非firstName/lastName)。
解决步骤:
- 执行Prisma生成命令更新Client:
npx prisma generate
该命令会读取最新的Schema文件,重新生成适配的Prisma Client代码。
2. 重启Express服务器
确保服务器加载的是最新生成的Prisma Client,否则旧的Client代码依然会生效。
3. 验证生成结果
生成完成后,可查看node_modules/@prisma/client目录下的代码,确认UserCreateInput类型已包含firstName和lastName字段。
额外检查项:
- 确认Schema文件保存正确,无拼写错误(比如
firstName是否误写为firstname) - 确认DATABASE_URL配置正确,Prisma能正常连接MongoDB
内容的提问来源于stack exchange,提问作者Sepehr
相关产品推荐
相关产品推荐

