Аутентификация: JWT, хранящийся в LocalStorage < /p>
Постоянность корзины: корзина сохраняется в mongodb, пользовательский ID прикрепляется к каждой записи корзины. < /p>
on Page Preshred, Потерянный CART - это CATE, Потому что CART - это пошло на CART. Потеряно. Потому что CART - это потеряно. /> Я не получаю сохраненную корзину из бэкэнд на перезагрузке страницы. < /p>
Возможно, изнасилование пользователя, используемого в запросах бэкэнд, неправильно извлечено из JWT после обновления. База данных с userID в каждом обновлении. < /p>
Прикрепление токена JWT в заголовке авторизации правильно. < /p>
Использование данных об использовании для данных корзины на странице.const mongoose = require("mongoose");
const cartSchema = new mongoose.Schema({
userId: { type: mongoose.Schema.Types.ObjectId, ref: "Auth", required: true }
,
items: [
{
productID: {type: mongoose.Schema.Types.ObjectId, ref: "Product", required: true},
qty: {type: Number, required: true, min: 1}
}
],
createdAt: {type: Date, default: Date.now()}
})
module.exports = mongoose.model("Cart", cartSchema);
< /code>
const express = require("express");
const router = express.Router();
const Cart = require("../Models/Cart")
router.get("/:userId", async (req, res) => {
try {
const userId = req.params.userId;
const cart = await Cart.findOne({userId:req.userId}).populate("items.productID");
if (!cart) {
return res.json({ items: [] });
}
const enrichedItems = cart.items.map(item => {
const product = item.productID;
if (!product) return null; // In case product is deleted
return {
_id: product._id,
name: product.name,
price: product.price,
qty: item.qty
};
}).filter(Boolean); // Remove any nulls
res.json({ items: enrichedItems });
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// POST /cart
router.post("/", async (req, res) => {
try {
const { userId,items } = req.body;
console.log(userId,items);
if (!Array.isArray(items) || items.length === 0) {
return res.status(400).json({ message: "Invalid cart data." });
}
if(!userId || !Array.isArray(items) || items.length === 0){
return res.status(400).json({message: "Invalid Cart Data or userID Missing"})
}
const existingCart = await Cart.findOne({userId});
if(existingCart){
existingCart.items = items;
await existingCart.save();
return res.status(200).json({message: "Cart Updated", cart: existingCart})
}
const newCart = new Cart({ userId,items });
console.log("New Cart:",newCart);
await newCart.save();
res.status(201).json({ message: "Cart saved", cart: newCart });
} catch (err) {
res.status(500).json({ message: err.message });
}
});
module.exports = router;
Подробнее здесь: https://stackoverflow.com/questions/797 ... mern-stack