如何使用 Mongoose $pull 运算符删除对象数组

时间:2021-05-22 11:24:44

标签: javascript node.js mongodb mongoose mongodb-query

我正在开发具有购物车页面和卖家面板页面的电子商务应用程序。卖家可以从面板管理他们所有的产品。当卖家在这里删除产品时,我想做的是:
1.删除产品
2。删除产品的所有评论
3.从所有愿望清单中删除产品
4.从所有购物车中删除产品

现在我可以做 1,2,3 但不能做第 4 步。


我的购物车架构:
const cartSchema = new mongoose.Schema(
  {
    items: [
      {
        product: { type: mongoose.Schema.Types.ObjectId, ref: "Product" },
        seller: { type: mongoose.Schema.Types.ObjectId, ref: "Shop" },
        color: String,
        quantity: Number,
        stripePriceId: String,
        stripeProductId: String,
        selected: Boolean,
      },
    ],
    user: {
      type: mongoose.Schema.Types.ObjectId,
      ref: "User",
    },
  },
  { timestamps: true }
);

卖家删除商品后运行的代码:

const Cart = require("../models/shoppingCart");
await Cart.updateMany({ $pull: { "items.product": req.params.id } });

上面的代码给出了一个错误,说:

Cannot use the part (product) of (items.product) to traverse the element

然后我尝试了这段代码,但也没有用,但没有返回任何错误:

const Cart = require("../models/shoppingCart");
await Cart.updateMany({ $pull: { items: { product: req.params.id } } });

那些代码都没有按预期工作。我想删除与已删除产品关联的所有购物车项目。我该怎么做?

0 个答案:

没有答案