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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Cart показывает элемент после добавления, но исчезает на обновлении (стек Mern)
    Anonymous » » в форуме Javascript
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Интеграция линейной регрессии в стек-приложение MERN: Python или JavaScript? [закрыто]
    Гость » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Гость
  • Username.js не показывает желаемый результат (используя MERN для проекта)
    Anonymous » » в форуме CSS
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • «Окно не определено», но стек выглядит неверно; Как получить точный стек вызовов?
    Anonymous » » в форуме Javascript
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как мне избежать добавления того же продукта в базу данных CART?
    Anonymous » » в форуме Javascript
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

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