Maison  >  Questions et réponses  >  le corps du texte

Réécrivez le titre comme suit : MongoDB stocke les données clés dans les collections mais envoie les données expirées à res()

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粉585541766P粉585541766299 Il y a quelques jours361

répondre à tous(2)je répondrai

  • P粉674876385

    P粉6748763852024-01-17 22:21:52

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

    répondre
    0
  • P粉574268989

    P粉5742689892024-01-17 11:04:50

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

    let newCart = await cart.save();
    res.json(newCart);

    répondre
    0
  • Annulerrépondre