首页 > 解决方案 > 产品无法删除

问题描述

我的项目中遇到以下问题。我正在尝试删除添加的产品,但不幸的是,它无法删除。因此,让我向您展示我的代码。

首先我有 Product.js 模型。

static deleteById(prodId){
        const db = getDb();
        return db
        .collection('products')
        .deleteOne({_id: new mongodb.ObjectId(prodId) })
        .then(result => {
            console.log('Deleted');
        })
        .catch(err => {
            console.log(err);
        });
    }

然后我在我的控制器 Admin.js 文件中使用deleteById函数。

exports.postDeleteProduct = (req, res, next) => {
  const prodId = req.params.productId;
  Product.deleteById(prodId)
      .then(() => {
          console.log('DESTROYED PRODUCT');
          res.redirect('/admin/products');
      })
      .catch(err => console.log(err));
};

之后,我在 routes->admin.js 文件中创建了必要的路由。

const path = require('path');

const express = require('express');

const adminController = require('../controllers/admin');

const router = express.Router();


// /admin/add-product => GET
router.get('/add-product', adminController.getAddProduct);

// admin/products => GET
router.get('/products', adminController.getProducts);

// /admin/add-product => POST
router.post('/add-product', adminController.postAddProduct);

router.get('/edit-product/:productId', adminController.getEditProduct);

router.post('/edit-product', adminController.postEditProduct);

router.post('/delete-product', adminController.postDeleteProduct);

module.exports = router;

最后,还有一个包含删除按钮的 HTML 文件。

        <main>
            <% if (prods.length > 0) { %>
                <div class="grid">
                    <% for (let product of prods) { %>
                        <article class="card product-item">
                            <header class="card__header">
                                <h1 class="product__title">
                                    <%= product.title %>
                                </h1>
                            </header>
                            <div class="card__image">
                                <img src="<%= product.imageUrl %>" alt="<%= product.title %>">
                            </div>
                            <div class="card__content">
                                <h2 class="product__price">$
                                    <%= product.price %>
                                </h2>
                                <p class="product__description">
                                    <%= product.description %>
                                </p>
                            </div>
                            <div class="card__actions">
                                <a href="/admin/edit-product/<%= product._id %>?edit=true" class="btn">Edit</a>
                                <form action="/admin/delete-product" method="POST">
                                    <input type="hidden" value="<%= product._id %>" name="productId">
                                    <button class="btn" type="submit">Delete</button>
                                </form>
                            </div>
                        </article>
                        <% } %>
                </div>
                <% } else { %>
                    <h1>No Products Found!</h1>
                    <% } %>
        </main>
        <%- include('../includes/end.ejs') %>

这是我的回购

如何解决删除问题?

标签: mongodbmongodb-query

解决方案


推荐阅读