Hello Guys I am getting error 'Cannot GET /admin-panel/products/edit-product/recorded' while using PUT request . What I am trying to do is when user press edit button to edit product all the product detail will be shown on edit page , I mean in input bar and user can clear the detail and enter new detail and click on edit button .Though I didnt wrote logic for editing data in DB but I am testing the url. Handlebar code
<html>
<head>
<title>Create Product</title>
<link rel="stylesheet" href="/css/createProduct.css">
<link href="https://fonts.googleapis.com/css2?family=Bree+Serif&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans:wght@500&display=swap" rel="stylesheet">
</head>
<body>
<form action={{formAction}} method="PUT" autocomplete="off" enctype='multipart/form-data'>
<div id="main">
<div id="head-div" class="outer-div">
<div id="head">{{head}}</div>
</div>
<div id="name-div" class="outer-div">
<div id="name-text" class="text">Name</div>
<input type="text" id="input-name" class="input" name="name" value={{data.name}}></input>
</div>
<div id="price-div" class="outer-div">
<div id="price-text" class="text">Price</div>
<input type="text" id="input-price" class="input" name="price" value={{data.price}}></input>
</div>
<div id="size-div" class="outer-div">
<div id="size-text" class="text">Size</div>
<input type="text" id="input-size" class="input" name="size" value={{data.size}}></input>
</div>
<div id="stock-div" class="outer-div">
<div id="stock-text" class="text">Quantity In Stock</div>
<input type="text" id="input-stock" class="input" name="stock" value={{data.stock}}></input>
</div>
<div id="unit-div" class="outer-div">
<div id="unit-text" class="text">Unit</div>
<input type="text" id="input-unit" class="input" name="unit" value={{data.unit}}></input>
</div>
<div id="category-div" class="outer-div">
<div id="category-text" class="text">Category</div>
<input type="text" id="input-category" class="input" name="category" value={{data.category}}></input>
</div>
<div id="brand-div" class="outer-div">
<div id="brand-text" class="text">Brand</div>
<input type="text" id="input-brand" class="input" name="brand" value={{data.brand}}></input>
</div>
<div id="image-div" class="outer-div">
<div id="image-text" class="text">Image</div>
<input type="file" id="input-image" class="input" name="image" value={{data.image}}></input>
</div>
<div id="create-btn-div" class="outer-div">
<button type="submit" id="create-btn"><span id="btn-span">{{btnText}}</span></button>
</div>
</div>
</form>
</body>
</html>
Router file
exports.editProductPage=async(req,res)=>{
console.log("in edit product page");
const head ="Edit Product";
const btnText="Edit";
const formAction="/admin-panel/products/edit-product/recorded"
try{
console.log("(edit product page) req.params.id = "+req.params.id);
console.log("(edit product page) req.id = "+req.id);
const savedData=await CreateProduct.findOne({a_id:req.id});
const data=savedData.products.find((product)=>{
return product._id==req.params.id;
});
res.cookie('oid',req.params.id);
// res.send({data:data});
res.render('create-product',{
head,
data,
btnText,
formAction
})
// console.log("data = "+data);
}
catch(error){
console.log(error) ;
}
}
exports.editProduct=async(req,res)=>{
// res.redirect('/login')
console.log("in edit product");
const createProducts = new CreateProduct();
const name = req.body.name;
const price = req.body.price;
const size = req.body.size;
const stock = req.body.stock;
const unit = req.body.unit;
const category = req.body.category;
const brand = req.body.brand;
const images = req.file.buffer;
const obj = {
name,
price,
size,
stock,
unit,
category,
brand,
// images
}
console.log(obj)
console.log("cookie (from edit product fun ) = "+req.cookies);
const oid=req.cookies.oid;
try{
console.log("in edit");
const userData=await CreateProduct.findOne({a_id:req.id});
const data= await userData.products.filter((product)=>{
return product._id==oid;
})
console.log(data);
if(!data){
res.status(404).send();
}
res.send({message:"edited successfully "});
}
catch(error){
console.log(error);
res.send({message:"error"});
}
}
routes
router.get('/admin-panel/products/edit/:id',verifyJWT,getInfo,editProductPage);
router.put('/admin-panel/products/edit-product/recorded',verifyJWT,getInfo,upload.single('image'),editProduct);