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 })}};
在findOneAndUpdate()中使用{new: true},并在moment中使用save()进行异步操作
在else条件中添加await。即: