Getting error while updating data using PUT method

Viewed 13

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);
0 Answers
Related