javascript - 我不断收到 TypeError: Cannot read property 'find' of undefined
问题描述
我目前正在使用我的添加到购物车控制器,我是否遗漏了任何导致它无法工作的东西?似乎我的“cartItems”没有定义,我该如何定义?抱歉,我是初学者。我的 /controller/cart 下有以下内容:
const Cart = require('../models/cart');
exports.addItemToCart = (req, res) => {
Cart.find({ user: req.user._id})
.exec( (error, cart) => {
if(error) return res.status(400).json({ error });
if(cart){
//if cart already exists then update cart by quantity
const product = req.body.cartItems.product;
const item = cart.cartItems.find(c => c.product == product); //ERROR OCCURS HERE//
if(item){
Cart.findOneAndUpdate({ user: req.user._id, "cartItems.product": product}, {
"$set": {
"cartItems": {
...req.body.cartItems,
quantity: item.quantity + req.body.cartItems.quantity
}
}
})
.exec( ( error, _cart) => {
if(error) return res.status(400).json({ error });
if(_cart){
return res.status(201).json({ cart: _cart})
}
})
} else {
Cart.findOneAndUpdate({ user: req.user._id }, {
"$push": {
"cartItems": req.body.cartItems
}
})
.exec( ( error, _cart) => {
if(error) return res.status(400).json({ error });
if(_cart){
return res.status(201).json({ cart: _cart})
}
})
}
} else {
//if cart does not exist then create a new cart
const cart = new Cart({
user: req.user._id,
cartItems: [req.body.cartItems]
});
cart.save( (error, cart) => {
if(error) return res.status(400).json({ error });
if(cart){
return res.status(201).json({ cart });
}
});
}
});
}
我的购物车架构如下:
const mongoose = require('mongoose');
const cartSchema = new mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true
},
cartItems: [
{
product: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Product',
required: true
},
quantity: {
type: Number,
default: 1
},
price: {
type: Number,
required: true
}
}
]
}, { timestamps: true });
module.exports = mongoose.model('Cart', cartSchema);
当我尝试在邮递员中运行一个发布请求时:
{
"cartItems": {
"product": "611d12946c14c2232c933af8",
"quantity": 1,
"price": 7000
}
}
我在我的 gitbash 上收到此错误:
events.js:288
throw er; // Unhandled 'error' event
^
TypeError: Cannot read property 'find' of undefined
at cart.js:12:41
解决方案
你_id
定义了吗?从用户结构看不像。我将console.log(req)
在第 12 行之前添加一个右侧,以便您可以查看入站参数中的内容,并确定处理程序的假设中缺少哪些部分。
推荐阅读
- php - 想要 index.php 在加载时加载
- javascript - 有人可以解释这是如何返回对象的键值对吗?谢谢
- javascript - 通过部分视图提交
- python - SQLite 绑定错误数不正确
- web-scraping - bet365 通过 puppeteersharp 无限加载和崩溃页面
- java - 我可以在 catch 块中重新分配异常类型并重新抛出它吗?
- javascript - 我有一个动态的 html 表,所以我如何在 django 数据库中添加具有相同名称和 id+1 的多行,它只在数据库中添加了第一行
- google-chat - Google Chat 中的选项转发
- flutter - pubspec.yaml 没有 SDK 下限约束。扑
- javascript - 有什么方法可以为 ES6 模块“导入”请求指定额外的 [HTTP] 标头?