將標題重寫為:MongoDB將關鍵資料儲存在集合中,但會將過期資料傳送到res()
P粉585541766
P粉585541766 2024-01-17 00:18:34
0
2
386

一切都運作正常,但我在res()中得到的資料比實際操作晚一步。我已經重寫了整個程式碼一百次,但不再理解問題出在哪裡。

這是後端程式碼的一部分,使用了express.js、node.js和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

全部回覆(2)
P粉674876385

在findOneAndUpdate()中使用{new: true},並在moment中使用save()進行非同步操作

P粉574268989

在else條件中加入await。即:

let newCart = await cart.save();
res.json(newCart);
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板