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

使用Express+Node+Prisma操作MySQL时,create方法报'name参数缺失'错误

问题解决:Prisma.create()提示Argument name is missing

问题根源

你的Express后端未配置JSON请求体解析中间件,导致前端发送的JSON数据无法被解析,req.body.itemName实际为undefined,传给Prisma的name参数自然缺失,触发错误。

解决方案

在你的Express主入口文件(如app.js/server.js)中,在注册路由之前添加express.json()中间件:

const express = require('express');
const app = express();

// 关键:添加JSON解析中间件
app.use(express.json());

// 之后再注册你的api路由
const apiRouter = require('./path/to/api.js');
app.use('/backend/api', apiRouter);

额外验证点

  1. 前端代码已正确设置Content-Type: application/json,无需修改;
  2. 确认前端控制台输出的JSON.stringify({ itemName: itemName })包含有效内容,确保输入框的值已正确获取。

相关代码参考

前端script.js

addItemForm.addEventListener('submit', async (event) => {
  event.preventDefault();
  const itemName = itemNameInput.value.trim();
  console.log(JSON.stringify({ itemName: itemName }))
  if (itemName) {
    try {
      await fetch('/backend/api/add-person', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({ itemName: itemName })
      });
      fetchData(); // Refresh the list after adding an item
      itemNameInput.value = ''; // Clear input field
    } catch (error) {
      console.error('Error adding item:', error);
    }
  }
});

后端api.js

router.post('/add-person', async (req, res) => {
  const itemName = req.body.itemName;
  
  try {
    await prisma.list.create({
      data: {
        name: itemName
      }
    });
    res.redirect('/');
  } catch (error) {
    console.error(error);
    res.status(500).send('Error adding item to database');
  }
});

Prisma模型定义

model list {
  id   Int    @id @default(autoincrement())
  name String @db.VarChar(255)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:10:11