Javascript 如何使此删除路由在我的products.js路由中工作?

Javascript 如何使此删除路由在我的products.js路由中工作?,javascript,node.js,mongodb,mongoose,routes,Javascript,Node.js,Mongodb,Mongoose,Routes,我在Mongoose中抓取单个产品的_id5e335c57bd37eb1dd4d99b1f,使我的删除路径用于删除单个产品时遇到问题。我认为简单地复制更新路径并稍微改变一下就可以了。邮递员的其他路线都很好 products.js const express=requireexpress, 路由器=express.router, 产品=要求../models/Product.model; //产品列表路线 router.get/,functionreq,res{ Product.find.then

我在Mongoose中抓取单个产品的_id5e335c57bd37eb1dd4d99b1f,使我的删除路径用于删除单个产品时遇到问题。我认为简单地复制更新路径并稍微改变一下就可以了。邮递员的其他路线都很好

products.js const express=requireexpress, 路由器=express.router, 产品=要求../models/Product.model; //产品列表路线 router.get/,functionreq,res{ Product.find.thenproducts=>{ res.status200.json产品; }.catcherr=>{ res.status400.send`receiving products失败。错误详细信息:${err.message}`; }; } //产品详细信息路线 router.get/:产品标识、函数请求、资源{ Product.findByIdreq.params.Product\u id.thenproduct=>{ res.status200.jsonproduct; }.catcherr=>{ res.status400.send`接收产品详细信息失败。错误详细信息:${err.message}`; }; } //产品创建逻辑路线 router.post/add,functionreq,res{ 让产品=新产品需求主体; product.save.thenproduct=>{ res.status200.json{product:`product已成功添加。创建的产品详细信息:${product}`}; }.catcherr=>{ res.status400.send`添加新产品失败。错误详细信息:${err.message}`; }; } //产品更新路线 router.put/:产品标识、功能请求、资源{ Product.findByIdreq.params.Product\u id.thenproduct=>{ product.name=req.body.name; product.description=需求主体描述; product.price=需求主体价格; product.stock=req.body.stock; product.save.thenproduct=>{ json`Product updated!更新的产品详细信息:${Product}`; }.catcherr=>{ res.status400.send`无法更新。错误详细信息:${err.message}`; }; }.catcherr=>{ res.status404.send`未找到产品。错误详细信息:${err.message}`; }; } //产品销毁路线不工作 路由器.delete/:产品标识、功能请求、资源{ Product.findreq.params.Product\u id.thenproduct=>{ product.remove.thenproduct=>{ json`Product deleted!deleted Product details:${Product}`; }.catcherr=>{ res.status400.send`无法删除。错误详细信息:${err.message}`; }; }.catcherr=>{ res.status404.send`未找到产品。错误详细信息:${err.message}`; }; }
module.exports=路由器 find返回一个数组,数组中没有remove方法。你需要使用findOne。此外,当找不到任何内容时,“查找”不会抛出错误。所以最好检查find是否返回null

路由器.delete/:产品标识、功能请求、资源{ Product.findOnereq.params.Product\u id .thenproduct=>{ if产品{ 产品 去除 .thenproduct=>{ json`Product deleted!deleted Product details:${Product}`; } .catcherr=>{ res.status400.send`无法删除。错误详细信息:${err.message}`; }; }否则{ res.status404.send`未找到产品。错误详细信息:${err.message}`; } } .catcherr=>{ res.status500.send`Error details:${err.message}`; }; }; 您还可以使用findByIdAndDelete方法缩短此代码,如下所示:

路由器.delete/:产品标识、功能请求、资源{ Product.findbyidandlereq.params.Product\u id .thenproduct=>{ if产品{ return res.status200.json`Product deleted!deleted Product details:${Product}`; }否则{ return res.status404.sendProduct未找到; } } .catcherr=>{ res.status500.send`Error details:${err.message}`; }; };
find返回一个数组,数组中没有remove方法。你需要使用findOne。此外,当找不到任何内容时,“查找”不会抛出错误。所以最好检查find是否返回null

路由器.delete/:产品标识、功能请求、资源{ Product.findOnereq.params.Product\u id .thenproduct=>{ if产品{ 产品 去除 .thenproduct=>{ json`Product deleted!deleted Product details:${Product}`; } .catcherr=>{ res.status400.send`无法删除。错误详细信息:${err.message}`; }; }否则{ res.status404.send`未找到产品。错误详细信息:${err.message}`; } } .catcherr=>{ res.status500.send`Error details:${err.message}`; }; }; 您还可以使用findByIdAndDelete方法缩短此代码,如下所示:

路由器.delete/:产品标识、功能请求、资源{ Product.findbyidandlereq.params.Product\u id .thenproduct=>{ if产品{ return res.status200.json`Product deleted!deleted Product details:${Product}`; }否则{ return res.status404.sendProduct未找到; } } .catcherr=>{ res.status500.send`E 错误详细信息:${err.message}`; }; };
如果您像在更新路径中那样使用“.findById”而不是“.find”,那么它是否有效?我也不幸地遇到了与“.findById”相同的错误。您在使用.findById运行它时是否遇到了相同的错误?为什么不尝试其他方法,我的意思是findOneAndRemove?如果您像在更新路径中那样使用“.findById”而不是“.find”?那么它是否有效?我也很遗憾地看到“.findById”出现了同样的错误。当您使用.findById运行它时,您会遇到同样的错误吗?为什么不尝试其他方法,我的意思是findOneAndRemove?