Réécrivez le titre comme suit : MongoDB stocke les données clés dans les collections mais envoie les données expirées à res()
P粉585541766
P粉585541766 2024-01-17 00:18:34
0
2
368

Tout fonctionne bien, mais les données que je reçois dans res() sont en retard sur l'opération réelle. J'ai réécrit le code entier une centaine de fois et je ne comprends plus quel est le problème.

Cela fait partie du code backend, utilisant express.js, node.js et mongodb :

export const addToCart = async (req, res) => { try {
const cart = await CartModul.findOne({ user: req.userId });
if (cart) {
  const product_id = req.body.product_id;
  const item = cart.cartItems.find((c) => c.product_id == product_id);
  console.log("item", item);
  if (item) {
    try {
      const cart = await CartModul.findOneAndUpdate(
        { user: req.userId, "cartItems.product_id": product_id },
        {
          "cartItems.$": {
            ...req.body,
            quantity: item.quantity + req.body.quantity,
            totalPrice: item.totalPrice + req.body.price,
          },
        }
      );
      if (cart) {
        return res.status(200).json({ cart });
      }
    } catch (error) {
      return res.status(400).json({ error });
    }
  } else {
    try {
      const cart = await CartModul.findOneAndUpdate(
        { user: req.userId },
        {
          $push: {
            cartItems: req.body,
          },
        }
      );
      if (cart) {
        return res.status(200).json({ cart });
      }
    } catch (error) {
      return res.status(400).json({ error });
    }
  }
} else {
  try {
    const cart = new CartModul({
      user: req.userId,
      cartItems: req.body,
    });
    cart.save();
    res.json(cart);
  } catch (error) {
    return res.status(400).json({ error });
  }
} } catch (error) {
return res.status(400).json({ error })}};

P粉585541766
P粉585541766

répondre à tous(2)
P粉674876385

Utilisez {new: true} dans findOneAndUpdate() et utilisez save() au moment pour un fonctionnement asynchrone

P粉574268989

Ajouter une attente dans une autre condition. C'est à dire :

let newCart = await cart.save();
res.json(newCart);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal