Schreiben Sie den Titel wie folgt um: MongoDB speichert Schlüsseldaten in Sammlungen, sendet aber abgelaufene Daten an res()
P粉585541766
P粉585541766 2024-01-17 00:18:34
0
2
372

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粉585541766
P粉585541766

Antworte allen(2)
P粉674876385

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

P粉574268989

在else条件中添加await。即:

let newCart = await cart.save();
res.json(newCart);
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage