Javascript node express mongo API更新记录问题

Javascript node express mongo API更新记录问题,javascript,node.js,mongodb,express,ecmascript-6,Javascript,Node.js,Mongodb,Express,Ecmascript 6,我正在使用node、express和mongoDB创建一个restapi。尝试创建获取、创建、删除和更新函数。除更新功能外,所有功能均正常工作。当我尝试使用postman检查时,代码挂起,服务器停止并显示错误,同样当我保存源代码时,服务器正常运行。但每次我尝试做更新后的代码挂起和错误显示我认为我的更新后的代码有问题,我是初学者在Nodejs,所以我不知道为什么会发生这个错误,如果有人知道请检查 我的crud代码如下 import express from "express";

我正在使用node、express和mongoDB创建一个restapi。尝试创建获取、创建、删除和更新函数。除更新功能外,所有功能均正常工作。当我尝试使用postman检查时,代码挂起,服务器停止并显示错误,同样当我保存源代码时,服务器正常运行。但每次我尝试做更新后的代码挂起和错误显示我认为我的更新后的代码有问题,我是初学者在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;
这就是《邮差》中出现的错误


这是我尝试在postman中发送补丁请求时在vscode中显示的错误

这是postman中get请求的输出
原因是您在
.patch
请求中交换了
req
res
的位置

用以下代码替换代码的最后一部分。 注意它是
req,res
而不是
res,req

router.patch(“/:posted”),异步(req,res)=>{
试一试{
const updatedPost=wait Post.updateOne(
{u id:req.params.postId},
{$set:{title:req.body.title}
);
res.json(updatedPost);
}捕获(错误){
res.json({message:error});
}
});

控制台中是否有任何错误?updatePost变量的输出是什么?(console.log it),你试过用return res.json代替res.json吗?@yashkumarvema抱歉刚才更新了错误图像你应该
return res.json
@MukeshSuthar No,
return
不是必需的在你的补丁处理程序中,你翻转了参数名:
async(res,req)=>{
应该是
async(req,res)=>{
(与其他地方一样)。您试图调用
.json()
,以了解请求的实际内容。只需投票以键入方式关闭即可。我不认为这是代码中的键入错误,而是操作混乱,不清楚当我们交换函数参数的位置时会发生什么“除了更新函数以外,所有函数都正常工作”表明他们不是故意交换的,也不知道有什么问题code@YashKumarVerma你好,我有另一个问题,请检查,如果可能的话可以检查吗?