我尝试将产品添加到存储在mongodb中的购物车,但出现“TypeError:无法读取未定义的属性(阅读“查找”)”将发生,导致它不添加任何产品到购物车。我已经花了一整天试图让这个工作没有运气,任何帮助将不胜感激。
const express = require('express');
const Carts = require('../repo/carts');
// const cartShowTemplate = require('../views/carts/show');
const router = express.Router();
let cart;
router.post('/cart/products', async (req, res) => {
if (!req.session.cartId) {
cart = await Carts.create({ items: [] });
req.session.cartId = cart._id;
} else {
cart = await Carts.find(req.session.cartId);
}
console.log(cart);
// look thru cart and find item with id property equal to req.body.productId
property
//if item exists increment by 1 and save cart
//add new product to items array
const existingItem = cart.items.find(item => item._id === req.body.productId)
if (existingItem) {
existingItem++;
} else {
cart.items.push({ id: req.body.productId, quantity: 1 });
}
await Carts.updateOne(cart._id, {
items: cart.items
});
res.send('product added to cart!!');
});
module.exports = router;
carts mongodb模式
const mongoose = require('mongoose');
const cartSchema = new mongoose.Schema({
_id: String,
items: [
{ quantity: Number, _id: String },
]
});
const Carts = new mongoose.model('Carts', cartSchema);
module.exports = Carts;
1条答案
按热度按时间vlf7wbxs1#
此行可能存在问题:
findById
如果按id查找,则应使用
findById
,而不是find
。findById
是.find({_id: req.session.cartId})
的快捷方式,使用find
时,它将需要一个查询对象。