Tulis semula tajuk sebagai: MongoDB menyimpan data utama dalam koleksi tetapi menghantar data tamat tempoh ke res()
P粉585541766
P粉585541766 2024-01-17 00:18:34
0
2
385

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

membalas semua(2)
P粉674876385

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

P粉574268989

Tambah tunggu dalam keadaan lain. Iaitu:

let newCart = await cart.save();
res.json(newCart);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan