对于模型“Cart\”的路径“_id\”处的值“clear\”(类型字符串),转换为 ObjectId 失败}

问题描述 投票:0回答:0

我正在使用 Express.js、Mongoose 和 MongoDB 开发一个电子商务应用程序。我在尝试清除用户的购物车时遇到问题。目标是删除当前经过身份验证的用户购物车中的所有商品。但是,我不断遇到以下错误消息:

背景

  1. 后端框架:Node.js 与 Express
  2. 数据库:MongoDB 与 Mongoose ORM
  3. 身份验证:JWT

问题描述

我的购物车控制器中有一个

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;



reactjs node.js mongodb express mern
© www.soinside.com 2019 - 2024. All rights reserved.