首页 > 解决方案 > node express mongo API 更新记录问题

问题描述

我正在使用 node、express、mongoDB 创建一个 rest api。尝试制作 fetch、create、delete 和 update 函数。除了更新功能之外的所有工作。当我尝试使用邮递员进行检查时,代码挂起,服务器停止并显示错误,当我再次保存源代码时,服务器正常运行。但是每次我尝试更新帖子时,代码都会挂起并且出现错误我认为我的更新帖子代码有问题,我是 Nodejs 的初学者,所以我不确定为什么会发生这个错误,如果有人知道请检查

我的crud代码在下面

import express from "express";
import Post from "../models/PostModel.js";

const router = express.Router();

//  get all posts
router.get("/", async (req, res) => {
  try {
    const posts = await Post.find();
    res.json(posts);
  } catch (err) {
    res.json({ message: err });
  }
});

// submits a post
router.post("/", async (req, res) => {
  const post = new Post({
    title: req.body.title,
    message: req.body.message,
  });
  try {
    const savedPost = await post.save();
    res.json(savedPost);
  } catch (err) {
    res.json({ message: err });
  }
});

// get specific post
router.get("/:postId", async (req, res) => {
  try {
    const post = await Post.findById(req.params.postId);
    res.json(post);
  } catch (err) {
    res.json({ message: err });
  }
});

// delete a specific post
router.delete("/:postId", async (req, res) => {
  try {
    const removePost = await Post.remove({ _id: req.params.postId });
    res.json(removePost);
  } catch (error) {
    res.json({ message: error });
  }
});

//update a post

router.patch("/:postId", async (res, req) => {
  try {
    const updatedPost = await Post.updateOne(
      { _id: req.params.postId },
      { $set: { title: req.body.title } }
    );
    res.json(updatedPost);
  } catch (error) {
    res.json({ message: error });
  }
});

export default router;

这是邮递员中出现的错误 在此处输入图像描述


这是我尝试在邮递员中发送补丁请求时出现在 vscode 中的错误

在此处输入图像描述

这是邮递员中获取请求的输出 在此处输入图像描述

标签: javascriptnode.jsmongodbexpressecmascript-6

解决方案


原因是您交换了请求中的req和位置。res.patch

将最后一段代码替换为以下代码。 注意它是req, res和不是res, req

router.patch("/:postId", async (req, res) => {
  try {
    const updatedPost = await Post.updateOne(
      { _id: req.params.postId },
      { $set: { title: req.body.title } }
    );
    res.json(updatedPost);
  } catch (error) {
    res.json({ message: error });
  }
});

推荐阅读