Rumah  >  Soal Jawab  >  teks badan

Tulis semula tajuk sebagai: MongoDB menyimpan data utama dalam koleksi tetapi menghantar data tamat tempoh ke res()

Semuanya berjalan lancar, tetapi data yang saya perolehi dalam res() adalah satu langkah di belakang operasi sebenar. Saya telah menulis semula keseluruhan kod seratus kali dan tidak lagi memahami apa masalahnya.

Ini adalah sebahagian daripada kod hujung belakang, menggunakan express.js, node.js dan 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 hari yang lalu362

membalas semua(2)saya akan balas

  • P粉674876385

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

    Gunakan {new: true} dalam findOneAndUpdate(), dan gunakan save() seketika untuk operasi tak segerak

    balas
    0
  • P粉574268989

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

    Tambah tunggu dalam keadaan lain. Iaitu:

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

    balas
    0
  • Batalbalas