Rumah > Soal Jawab > teks badan
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粉6748763852024-01-17 22:21:52
Gunakan {new: true} dalam findOneAndUpdate(), dan gunakan save() seketika untuk operasi tak segerak
P粉5742689892024-01-17 11:04:50
Tambah tunggu dalam keadaan lain. Iaitu:
let newCart = await cart.save(); res.json(newCart);