suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Schreiben Sie den Titel wie folgt um: MongoDB speichert Schlüsseldaten in Sammlungen, sendet aber abgelaufene Daten an res()

Alles läuft gut, aber die Daten, die ich in res() erhalte, liegen einen Schritt hinter dem eigentlichen Vorgang zurück. Ich habe den gesamten Code hundertmal umgeschrieben und verstehe nicht mehr, wo das Problem liegt.

Dies ist Teil des Backend-Codes, der express.js, node.js und mongodb verwendet:

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粉585541766320 Tage vor391

Antworte allen(2)Ich werde antworten

  • P粉674876385

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

    在findOneAndUpdate()中使用{new: true},并在moment中使用save()进行异步操作

    Antwort
    0
  • P粉574268989

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

    在else条件中添加await。即:

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

    Antwort
    0
  • StornierenAntwort