使用带有 express.js、hbs 和 mongodb 的 nodejs 从电子商务网站项目的管理面板编辑产品

edit a product from admin panel of eCommerce website project using nodejs with express.js, hbs and mongodb

编辑按钮

                    <td>
                        <a href="/admin/edit-product/{{this._id}}" class="btn btn-primary">edit</a>
                    </td>
我给编辑按钮

router.get 的编辑产品 link

var ProductHelpers = require('../helpers/product-helpers')
router.get('/edit-product/:id',async (req,res)=>{
  let product=await ProductHelpers.getProductDetails(req.params.id)
  console.log(product)
  res.render('admin/edit-products',{product})
}) {{!--here i have rendered edit products page and passed product variable --}}

编辑-products.hbs页面

section>
<div class="container">
    <div class="row mt-4">
        <div class="col-md-6">
            <h2 class="text-center">Edit Products</h2>
            <form action="/admin/edit-product/:{{product._id}}" method="post" enctype="multipart/form-data">
                <label for="">Number</label>
                <input name="no" class="form-control" type="text" value="{{product.no}}">

                <label for="">Name</label>
                <input name="name" class="form-control" type="text" value="{{product.name}}">

                <label for="">Catagery</label>
                <input name="catagery" class="form-control" type="text" value="{{product.catagery}}">

                <label for="">Price</label>
                <input name="price" class="form-control" type="text" value="{{product.price}}">

                <label for="">Description</label>
                <input name="description" class="form-control" type="text" value="{{product.description}}">

                {{!-- <label for="">Image</label>
                <input name="image" class="form-control" type="file"> --}}

                <button type="submit" class="btn btn-primary mt-4">Update</button>
            </form>
        </div>
    </div>
</div>
** link 编辑产品的 router.post 我在编辑-products.hbs 页面的表单操作中提供的产品**
var ProductHelpers = require('../helpers/product-helpers')
router.post('/edit-product/:id',(req,res) => {
  ProductHelpers.updateProducts(req.params.id,req.body).then(()=>{
    res.redirect('/admin/')
  })
})

产品-helpers.js页面

getProductDetails:(Proid)=>{
    return new Promise((resolve,reject)=> {
        db.get().collection(collection.PRODUCT_COLLECTION).findOne({_id:objectId(Proid)}).then((product)=>{
            resolve(product)
        })
    })
},
updateProducts:(Proid,ProDetails)=>{
    return new Promise ((resolve,reject)=>{
        db.get().collection(collection.PRODUCT_COLLECTION).updateOne({_id:objectId(Proid)},{
            $set:{
                no:ProDetails.no,
                name:ProDetails.name,
                catagery:ProDetails.catagery,
                catagery:ProDetails.price,
                description:ProDetails.description,
            }
        }).then((response)=>{
            resolve()
        })
    })
}

浏览器 浏览器中的编辑按钮 edit button

当我点击编辑按钮时,它会将我带到这个页面 edit product page

一切正常!..但问题是下一个 我更改了号码并点击了更新 结果是 result in browser

同时控制台的结果是:- console result

我希望我已经正确解释并且你已经明白了一切,如果你知道解决请帮助我,如果你对我的问题有任何疑问就问我。

注意 <form> 操作中的 :,将其更改为:

<form action="/admin/edit-product/{{product._id}}" method="post" enctype="multipart/form-data">