express - route.patch 中的 For 循环不起作用。|| Exprees.js
问题描述
下面是我为 /:productId 定义的 route.patch 函数的一段代码
route.patch('/:productId',(req,res,next)=>{
const id = req.params.productId;
const updateOps = {};
console.log(req.body);
for (const ops of req.body) {
updateOps[ops.propName] = ops.value;
console.log(updateOps);
}
res.status(200).json({Message: 'Hi'});
});
for 循环之前的 console.log(req.body) 工作,但 for 循环内的 console.log(updateOps) 不工作。甚至 res.status(200).json({Message: 'Hi'}); 不管用 。我收到一条找不到路线的错误。基本上 for 循环之前的一切都在工作,而 for 循环之后的一切都不起作用。
你能告诉我我在哪里做错了吗?是我在 route.patch 中使用 for 循环的方式错误吗?非常感谢任何帮助。
谢谢
解决方案
从评论中回答您关于错误处理的问题。您有以下中间件:
app.use((req, res, next) => {
const error = new Error('Not found');
//console.log(error.status) //console.log(error.message)
error.status = 404; //console.log(error.message)
next(error);
});
app.use((error, req, res, next) => {
res.status(error.status || 500);
res.json({
error: {
message: 'Route not found'
}
})
});
因此,对于每个请求,都会创建一个错误对象,您将其分配状态404
并将其传递给下一个中间件。在那里您发送错误响应,并且由于状态已设置为404
使用此状态。
实际上,您应该只删除创建错误的第一个中间件,因为这将针对每个请求完成。Express 已经处理了对不存在的路由的请求,并将返回一个404
未找到的响应。您可以保留第二个中间件来处理任何其他未处理的错误(尽管您应该更改错误消息:))
推荐阅读
- python - 赋值前已引用错误局部变量
- javascript - 在 NextJS 项目中在哪里插入 sitemap.xml 文件?
- docker - 容器化 AWS Lambda:python 处理程序无法访问 /home/app(但它可以访问 /tmp)
- node.js - Travi-ci.com 可以读取环境变量,但 travs-ci.com 不能
- javascript - 想要添加任何一个类,或者添加字体样式:斜体,到 map() 中的特定项目
- ios - LazyVStack ScrollView 性能
- python - pandas 和 nan 组团
- javascript - 强制代码暂停执行,直到带有承诺的函数结束执行 - javascript
- git - Git Ahead SSH 错误 - 无法克隆到“我的目录” - 找不到 SSH 身份文件
- sql-server - 我的 sqlcmd bcp 命令不断返回“'.' 附近的语法不正确。”