Node.js .catch(error=>;{})在响应错误时未显示错误。但当我安慰它时,它显示了错误

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

我正在开发一个API,我的错误给我带来了一些问题。当我响应它时,它在postman中显示一个空数组,但在logger中显示错误。这是我的密码。 Cluster1和Cluster2是我正在收集的两个集合。因此,在代码中,我尝试如果在cluster1(即products collection)中找到id,则在cluster2中发布您的订单,然后(保存时返回承诺),但我自己故意创建了错误,我在下面对其进行了注释,以检查.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响应中看到你想要的任何属性,那么从错误中解构它们总是一个好的实践。要成为一个更好的开发人员,只要利用你所掌握的每一个学习资源,不断地做好项目就行了。你将学到更多的东西,而不是通过教程,而是通过创造新的东西,在这个职业中,你永远不会停止学习。谢谢你,兄弟