javascript - 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 中的错误
解决方案
原因是您交换了请求中的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 });
}
});
推荐阅读
- java - 我使用 setVisible(true) 但不会出现 Java Swing Window
- android - 自定义 Android 对讲/辅助功能手势
- extjs - Extjs如何获取文本区域中的光标位置
- c++ - 在c ++中生成字符串映射到std :: list of pointers
- angular - 错误 TS2339:“主页”类型上不存在属性“路由器”
- javascript - Main.js 和 polyfills.js 编译不正确 - Angular/.Net Core 应用程序
- ansible - 当同一类别下有多个主机时如何只执行一次ansible ad-hoc命令
- javascript - 一个通道中同时连接的限制是多少?
- javascript - 在脚本标签之间使用 EJS
- android - 使用 Mockito.verify() 时,不只是检查是否在模拟对象上调用了该函数,而是调用来自真实对象的方法