Node.js .catch(error=>;{})在响应错误时未显示错误。但当我安慰它时,它显示了错误
我正在开发一个API,我的错误给我带来了一些问题。当我响应它时,它在postman中显示一个空数组,但在logger中显示错误。这是我的密码。 Cluster1和Cluster2是我正在收集的两个集合。因此,在代码中,我尝试如果在cluster1(即products collection)中找到id,则在cluster2中发布您的订单,然后(保存时返回承诺),但我自己故意创建了错误,我在下面对其进行了注释,以检查Node.js .catch(error=>;{})在响应错误时未显示错误。但当我安慰它时,它显示了错误,node.js,express,mongoose,Node.js,Express,Mongoose,我正在开发一个API,我的错误给我带来了一些问题。当我响应它时,它在postman中显示一个空数组,但在logger中显示错误。这是我的密码。 Cluster1和Cluster2是我正在收集的两个集合。因此,在代码中,我尝试如果在cluster1(即products collection)中找到id,则在cluster2中发布您的订单,然后(保存时返回承诺),但我自己故意创建了错误,我在下面对其进行了注释,以检查.catch()回调函数是否正常工作 app.post('/orders',(req
.catch()
回调函数是否正常工作
app.post('/orders',(req,res,next)=>{
const id=req.body.id;
console.log(id);
Cluster1.findById(id,()=>{
order = new Cluster2 ({
productId:id,
quantity:req.body.quantity,
pName:req.body.pName,
});
order.save().then(order=>{
res.json({
message:"Your order has been Posted",
YourPostedOrderIs:order.pName,
YourQuantityis:order.quantity,
YouPriceis:(pPrice*quantity),//I on purpose make this error to check the error when this
id is fin in cluster1
YourRequestIs:{type:"Post",url:"http://localhost:1111/"+order.productId}
})
})
//This Catch call back function give me empty error in postman when I response it.
.catch(error=>{
res.json(error);
console.log(error);
})
})
.catch(error=>{
res.json("Out Of Stock You cant Place the Order");
})
})
尝试返回res.json,如下所示:
return res.json(500, {
error,
message: "some error"
});
而不是res.json(错误)代码>尝试以下操作:
res.status(500).json({
message: error.message || "INTERNAL SERVER ERROR"
})
非常感谢兄弟帮我工作,兄弟Anuj,我是早期初级的平均堆栈开发人员。我怎样才能学习并变得优秀,这样我才能做出专业的应用,在阅读你的答案之前,我总是做res.json(error),它总是给我错误。为什么在这个api中我必须使用error.message来获取错误我的观察是,在Express docs for response.json中,它在发送之前将json字符串化:但是,错误实例,因为它们是error类的实例,在字符串化时通常不会返回任何有意义的内容。所以,如果你想在API响应中看到你想要的任何属性,那么从错误中解构它们总是一个好的实践。要成为一个更好的开发人员,只要利用你所掌握的每一个学习资源,不断地做好项目就行了。你将学到更多的东西,而不是通过教程,而是通过创造新的东西,在这个职业中,你永远不会停止学习。谢谢你,兄弟