我正在使用 Express.js、Mongoose 和 MongoDB 开发一个电子商务应用程序。我在尝试清除用户的购物车时遇到问题。目标是删除当前经过身份验证的用户购物车中的所有商品。但是,我不断遇到以下错误消息:
我的购物车控制器中有一个
clearCart
功能,应该删除登录用户的所有购物车项目。使用中间件从 JWT 令牌中提取用户 ID。
cartController.js
const asyncHandler = require('express-async-handler');
const Cart = require('../models/cartModel');
const mongoose = require('mongoose');
const clearCart = asyncHandler(async (req, res) => {
try {
console.log("User in clearCart controller:", req.user);
if (!req.user) {
res.status(401).json({ message: "Not authorized, user not found" });
return;
}
const userId = mongoose.Types.ObjectId(req.user._id);
console.log("User ID:", userId);
await Cart.deleteMany({ user: userId });
console.log("Cart cleared for user:", userId);
res.status(200).json({ message: 'Cart cleared' });
} catch (error) {
console.error("Error clearing cart:", error);
res.status(500).json({ error: error.message });
}
});
module.exports = { clearCart }; ```
const mongoose = require('mongoose');
const cartSchema = mongoose.Schema(
{
productId: {
type: String,
required: true,
ref: "BookUpload",
},
user: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: "User",
},
quantity: {
type: Number,
required: true,
default: 1,
}
},
{
timestamps: true,
}
);
const Cart = mongoose.model("Cart", cartSchema);
module.exports = Cart;