Cart показывает элемент после добавления, но исчезает на обновлении (стек Mern)Javascript

Форум по Javascript
Ответить
Anonymous
 Cart показывает элемент после добавления, но исчезает на обновлении (стек Mern)

Сообщение Anonymous »

Я строю веб-сайт электронной коммерции, используя стек Mern (mongodb, Express, React, node.js), и я застрял на странной ошибке с системой корзины. ITERS). /> База данных: mongodb < /p>
Аутентификация: 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»