我正在try 从POST文件发送POST请求,但我收到以下错误消息:我命中了错误的端点还是什么?


Error parsing request body: ReferenceError: title is not defined
    at handler (webpack-internal:///(api)/./Pages/api/post/index.js:7:12)
    at M:\Projects\squeeze\node_modules\next\dist\compiled\next-server\pages-api.runtime.dev.js:21:3039
    at M:\Projects\squeeze\node_modules\next\dist\server\lib\trace\tracer.js:133:36
    at NoopContextManager.with 

我正试着从POST表格中推送post title和布尔true/false.但我收到了很多错误,

下面的代码是位于./Components/Posts.tsx的Posts.tsx

import React from "react";

type Props = {
  title: String;
  published: boolean;
};

const Posts = (props: Props) => {
  const [postTitle, setPostTitle] = React.useState<any>("");
  const [published, setPublished] = React.useState<boolean>(false);

  const createPosts = async (e: React.FormEvent) => {
    e.preventDefault();

    if (!postTitle) {
      alert("Title is required");
      return;
    }
    try {
      const apiURL = "/api/posts";
      const requestedData = {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
        },
        body: JSON.stringify({ title: postTitle, published }),
      };
      const response = await fetch(apiURL, requestedData);
      const data = await response.json();
      console.log(data);
      if (!response.ok) {
        alert(`Failed to post : ${postTitle}`);
        return;
      }
      setPostTitle("");
      setPublished(false);
    } catch (error) {
      console.log(error);
    }
  };

  return (
    <form>
      <input
        type="text"
        value={postTitle}
        onChange={(e) => {
          setPostTitle(e.target.value);
        }}
      />
      <input type="text" className="text-black" onChange={(e) => {}} />
      <button onClick={createPosts} className="text-white">
        Create Posts
      </button>
    </form>
  );
};

export default Posts;

API代码

Pages/api/post/index.js

export default function handler(req, res) {
  try {
    ({ title, published } = req.body);
    if (!title) {
      throw new Error("Title is missing in request body");
    }
  } catch (error) {
    console.error("Error parsing request body:", error);
    res.status(400).json({ error: "Invalid request body" });
    return;
  }
}

棱镜方案


datasource db {
  provider = "mongodb"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model Post {
  id        String   @id @default(auto()) @map("_id") @db.ObjectId
  title     String
  published Boolean  @default(false)
  createdAt DateTime @default(now())
}

请帮帮我,我对API路由和所有这些都是新手.谢谢

推荐答案

问题在于您试图改变req.body in Your API路由处理程序的 struct .

// This line is causing the error
    ({ title, published } = req.body); // Incorrect destructuring assignment

当您在JavaScript中解构对象时,您应该在声明的上下文中进行(使用constletvar),或者如果您正在解构一个已经声明的对象,则不应该使用没有声明的赋值.

要解决此问题,您应该修改试图提取标题并从req.body发布的行.您应该在花括号前添加constlet以正确声明这些变量

export default function handler(req, res) {
  try {
    // Correct the destructuring by adding 'const'
    const { title, published } = req.body; // Corrected destructuring assignment
    if (!title) {
      throw new Error("Title is missing in request body");
    }
    // Your logic here...
  } catch (error) {
    console.error("Error parsing request body:", error);
    res.status(400).json({ error: "Invalid request body" });
    return;
  }
}

Javascript相关问答推荐

如何修复内容安全策略指令脚本-SRC自身错误?

如何判断属于多个元素的属性是否具有多个值之一

使用AJX发送表单后,$_Post看起来为空

单击子元素时关闭父元素(JS)

在react js中使用react—router—dom中的Link组件,分配的右侧不能被 destruct ''

当运行d3示例代码时,没有显示任何内容

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

如何在 cypress 中使用静态嵌套循环

如何在coCos2d-x中更正此错误

SPAN不会在点击时关闭模式,尽管它们可以发送日志(log)等

当代码另有说明时,随机放置的圆圈有时会从画布上消失

处理TypeScrip Vue组件未初始化的react 对象

postman 预请求中的hmac/sha256内标识-从js示例转换

Socket.IO在刷新页面时执行函数两次

本地损坏的Java脚本

在JavaScript中将Base64转换为JSON

Firefox的绝对定位没有达到预期效果

在JS/TS中构造RSA公钥

如何在单击链接时设置一个JavaScript变量(以打开弹出窗口的特定部分)

CSS网格使页面自动滚动